Pythonのデコレータ
作成した関数を書き換えずに、その関数の働きに変更を加えたい時、デコレータを用いることができる。 デコレータとは、入力として関数(変更を加えたい関数)を取り、出力として別の関数(変更を加える関数)を取る関数のことである。
具体例
引数として取ったふたつの数の和を返す関数add()があったとする。
def add(a,b): return a+b >>> add(3,4) 7
この関数を、中身を書き換えずに、"引数として取った二つの数の和の自乗"を返すようにしたい(つまり3と4を入れると72の49を返すようにする)。
ここで、デコレータを用いる。
デコレータは、引数として取った関数に対して処理を行う別の関数を定義し、その別の関数を返す。
def square(func): def new_func(*args,**kargs): result = func(*args,**kargs) return result ** 2 return new_func
作成したデコレータで関数を修飾するには、修飾したい関数の定義の直前に@<デコレータ名>とすればよい
@square def add(a,b): return a+b >>> add(3,4) 49