0
を返すことがあります。 私はデコレータは、私は以下の構文を理解できるようにオブジェクトを返すことがあることを理解する:ここでPythonのデコレータで関数を変更しないと、私はデコレータの動作を理解しようとしている値
def my_deco(fonction):
print("Deco is called with parameter the function {0}".format(fonction))
return fonction
@my_deco
def hello():
print("hello !")
Deco is called with parameter the function <function salut at 0x00BA5198>
デコレータはあまりしませんが、私は機能を変更する必要がある場合には、私が定義したいです初期関数の動作がmodified_func.Thisによって変更され、この
def my_deco(fonction):
def modified_func():
print("Warning ! calling {0}".format(fonction))
return fonction()
return modified_func
@my_deco
def hello():
print("Salut !")
のようなデコレータは、それが最初の関数の呼び出しが含まれて
結構です。これは、今、私は理解していないものを
罰金です:なぜ我々は、関数の結果を返すのですか?あなたはデコレータを書くとき、通常は、あなたが作る:私の場合、関数は、それがコメントであるので、私は何か、あなたの説明
あなたはデコレータの*は任意の*関数を適用することができ、それらの他の機能は十分戻り値を持っている可能性があるため。関連項目:任意のパラメータのサポート – jonrsharpe
厳密に言えば、fonction()を返す必要はありません。代わりに、単にそれを呼び出すことができます。 'fonction()'を呼び出し、その結果を破棄するか、あるいは適切な状況下で 'fonction'をまったく呼び出さないようにします。それはあなたのデコレーターなので、何が理にかなっているかを決めることができます。それを尋ねるならば、「fonction」の呼び出し元が装飾されていれば、大きく異なる結果が期待されるでしょうか?答えが "いいえ"(そして通常はそうです)の場合、デコレータが返す関数はおそらく 'fonction'の結果を返します。あなたの説明のために – jq170727
に感謝jq170727 – user1649114