-2
私はデコレータをPythonで理解しようとしています。次が動作しない理由を私は理解していない:なぜこのpythonデコレータは動作しませんか?
def decorator(func):
def logger(*args, **kwargs):
print "start logging"
func(*args, **kwargs)
print "end logging"
return logger
@decorator
def add(a,b):
return a+b
を私はadd(2,3)
を呼び出す場合、出力は次のようになります。
start logging
end logging
しかし、私は私のコードを変更し、logger
の定義にreturn func(*args, **kwargs)
を書く場合動作しますが、end logging
は出力に書き込まれません。
'return'を実行すると関数が終了する...関数の呼び出し結果を*、* print、*、*して返す。 – jonrsharpe
'logger'関数は' func'の値を返さなければなりませんが、最後までそれを行うことはできません。今少し、 'func'呼び出しの結果をどうやって保存することができますか?それで後で'返す 'ことができますか? –