この例で 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_twice
print_spam
do_twice(print_spam())
do_twice
print_spam
None
これは言語の決定です。Python では、すべての関数呼び出しを()
明確にする必要があります。これらのいくつかの例を見て、
a = b
b が関数の場合、何が得られるかはあいまいにa
なります (b 関数オブジェクトか、b を呼び出した結果か?)。
a( b )
何をa
受け取るでしょうか?(b 関数または b? を呼び出した結果)。を要求すること()
で、これらの問題は発生しません