不明点
デコレーターを勉強している者です。
デコレートされた関数は名前束縛をされないとの事ですが、それでは呼び出せないのではないかと思ってしまいます。不明点をまとめます。
0. 名前束縛と関数名は呼び出し時においてどう違うのですか。
0. 以下のコードにおいてデコレート関数の呼び出し時はf()
であるのにf.__name__
の返り値は_wrapper です。後者の理由は分かるのですが、呼び出し名と関数名が違うと言うところがよく分かりません。名前束縛されていない関数の呼び出し名にはどのような属性が使われているのですか。
以上の理由のご教示をお願いします。
当該コード
python
1def printcn(func): 2 def _wrapper(*args, *kwargs): 3 print(func(*args, *kwargs)) 4 return _wrapper 5 6@printcn 7def f(content): 8 return content.upper() 9 10f(“abc”) 11print(f.__name__)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/07/12 00:16