この例で f の最後に () を追加する必要があるのはなぜですか?
def do_twice(f):
f()
f()
def print_spam():
print 'spam'
do_twice(print_spam)
spam
spam
関数オブジェクトには関数の指定された引数が必要だからですか?
この例で f の最後に () を追加する必要があるのはなぜですか?
def do_twice(f):
f()
f()
def print_spam():
print 'spam'
do_twice(print_spam)
spam
spam
関数オブジェクトには関数の指定された引数が必要だからですか?
この例で f の最後に () を追加する必要があるのはなぜですか?
fは関数であるため、f()実際に関数を呼び出します。あなたの例では、関数にその結果ではなく、実際do_twice(print_spam)の関数を送信します。を使用した場合、関数はの戻り値を受け取ります。do_twiceprint_spamdo_twice(print_spam())do_twiceprint_spamNone
これは言語の決定です。Python では、すべての関数呼び出しを()明確にする必要があります。これらのいくつかの例を見て、
a = b
b が関数の場合、何が得られるかはあいまいにaなります (b 関数オブジェクトか、b を呼び出した結果か?)。
a( b )
何をa受け取るでしょうか?(b 関数または b? を呼び出した結果)。を要求すること()で、これらの問題は発生しません