爲什麼在這個例子中我必須在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
這是一種語言的決定,蟒蛇確實需要所有的函數調用有()
使事情毫不含糊的。就拿這幾個例子,
a = b
,如果b是一個功能,那將是模棱兩可什麼a
會得到(在B函數對象或調用B的結果呢?)。
a(b)
a
會得到什麼? (b函數還是調用b?的結果)。通過要求()
,不會出現這些問題
將括號添加到函數名稱的末尾意味着您正在調用它。如果你不這樣做,該函數將不會被調用。 – rubik 2012-03-18 08:14:45
我想....因爲f只會引用該對象,而f()將執行該函數 – 2012-03-18 08:16:09