デコレータとはデコレータ用の関数である関数を装飾し,装飾された関数にすり替えてくれる機能です.
例えば以下のようなデコレータ用の関数を用意します.
def my_decorator(func):
def decorated_my_func(*args, **kwargs):
print("デコレートしました")
func(*args, **kwargs)
return decorated_my_func
そして普通の関数を上の関数でデコレートして宣言します.
@my_decorator
def my_func(str):
print(str)
そして実行すると
>>> my_func("ああああああ")
デコレートしました
ああああああ
となります.つまりmy_func()
宣言時に@my_decorator
をつけることによって
>>> my_func = my_decorator(my_func)
... my_func("ああああああ")
デコレートしました
ああああああ
と同じことをしてくれるのがデコレータです.