私はこの簡単なコードを持っています。Pythonの関数を呼び出すときに関数が実行されないのはなぜですか?
def decor(func):
def wrap():
print("============")
func()
print("============")
return wrap
def print_text():
print("Hello world!")
decor(print_text())
なぜ「Hello world!」と表示されるのですか? 2つのラッパーではありませんか?ここで
'print_text()'をコールして戻り値( 'None' btw。)をdecorの引数として渡すと(印刷が行われるとき)、' decor'を呼び出します。副作用)と__throw away__戻り値。返された値を放棄すると、目に見える副作用もありません。デコレータを使う正しい方法は 'print_text = decor(print_text)'です。その後、 'print_test()'を呼び出すことができます。 –