0
私がデコレータについて少し再探索していたとき、私は多少の混乱を招くコードを見つけました。Python:オブジェクトとしての関数の混乱例
def get_text(name):
return "lorem ipsum, {0} dolor sit amet".format(name)
def p_decorate(func):
def func_wrapper(name):
return "<p>{0}</p>".format(func(name))
return func_wrapper
my_get_text = p_decorate(get_text)
print my_get_text("John")
# <p>Outputs lorem ipsum, John dolor sit amet</p>
私は(クール)変数と関数を渡すの概念はしかし、それが複数回通過された方法は私を混乱理解しています。 my_get_text
はすでに引数を持つ関数(別の関数)に割り当てられています。しかし、その直後にこの新しい変数を参照し、引数を渡します( "John")。 「ジョン」がfunc_wrapper()
に転送される方法も難解です。
my_get_text
はもっと多くの引数を受け取ることができ、内部関数にはどのように渡されますか?
コードのインデントを修正してください。インデントはPythonで意味を持ち、一般には推測できません。 –
'p_decorate()'は何を返しますか(もちろん、インデントが修正されたら)? –
また、この例で何が起きているのかを完全に理解するために、_closure_の概念を理解する必要があります。 –