デコレーターの@の仕組みを知りたいです。
@が使われた時、裏ではどのような処理が行われているのでしょうか。
例として次のようなデコレーターを作りました。
Python
1def decorator(func): 2 def wrapper(*args, **kwargs): 3 print(func.__name__ + "を実行します") 4 func(*args, **kwargs) 5 return wrapper 6 7 8@decorator 9def hello(name="someone"): 10 print("Hello", name, sep=" ") 11 12 13hello() 14 15""" 16helloを実行します 17Hello someone 18"""
この場合、@decoratorというのは、「@decoratorの持つfuncという引数に以下の関数(定義)を入れますよ」というような宣言を行う役割なのでしょうか?
またデコレーターの定義を行う時にある最後のreturn wrapperが理解できません。
wrapperがreturnされるとどうなるのでしょうか。どこにwrapperがreturnされるのでしょうか。
ご教授いただきたいです。宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/03/15 07:40
2019/03/15 08:30
2019/03/15 08:46 編集