■ 概要
デコレータは、前回の記事で取り上げたクロージャーの応用形です。
関数に機能を追加するための「関数」のことで、元の関数には手を加えずに、前後に処理を追加したり、ログを取ったりできます。
Pythonでは、@記法 を使って簡潔にデコレータを適用できます。
まずは、デコレータの前に高階関数を取り上げます。
■ 高階関数
高階関数とは?
高階関数は、「関数を引数に取る」または「関数を返す」関数のことを言います。
Pythonは関数もオブジェクトなので、変数と同様に渡したり返したりできます。
高階関数には、下記のいずれか、または両方の特徴を満たします。
条件
例
関数を引数に取る
map(), filter(), sorted(..., key=...)
関数を返す
クロージャー、デコレータなど
高階関数の具体例1:関数を引数に取る関数
def shout(text):
return text.upper()
def whisper(text):
return text.lower(