0

この例で f の最後に () を追加する必要があるのはなぜですか?

def do_twice(f):
    f()
    f()

def print_spam():
    print 'spam'

do_twice(print_spam)
spam
spam

関数オブジェクトには関数の指定された引数が必要だからですか?

4

2 に答える 2

4

この例で f の最後に () を追加する必要があるのはなぜですか?

fは関数であるため、f()実際に関数を呼び出します。あなたの例では、関数にその結果ではなく、実際do_twice(print_spam)の関数を送信します。を使用した場合、関数はの戻り値を受け取ります。do_twiceprint_spamdo_twice(print_spam())do_twiceprint_spamNone

于 2012-03-18T08:14:50.350 に答える
0

これは言語の決定です。Python では、すべての関数呼び出しを()明確にする必要があります。これらのいくつかの例を見て、

 a = b

b が関数の場合、何が得られるかはあいまいにaなります (b 関数オブジェクトか、b を呼び出した結果か?)。

 a( b )

何をa受け取るでしょうか?(b 関数または b? を呼び出した結果)。を要求すること()で、これらの問題は発生しません

于 2012-03-18T08:19:10.977 に答える