2016-10-21 66 views
-1

在這裏我得到了2套碼python函數調用與括號之間的區別是什麼?

def outer(msg): 
     def inner(msg): 
     return inner() 
    outer("hi") 

另一種是

def outer(msg): 
     def inner(msg): 
     return inner 
    outer("hi") 

請告訴我這兩個組之間的差異?

+1

第一個返回'inner'的結果,第二個返回一個指向'inner'的指針。 –

+0

爲什麼會陷入低谷? – Ananthu

+0

因爲你的問題顯然是愚蠢的 –

回答

4

使用圓括號調用函數並返回一個值。返回一個沒有調用它的函數(沒有括號)會返回指向函數本身的指針,而不是函數的值。你正在傳遞函數,所以可以在別的地方調用它。

0

括號是調用函數的語法。沒有嚴格的操作,但你可以考慮這樣的說法:

inner() # Call the function 

功能有返回值(默認爲None),所以

return inner() 

調用inner功能並返回任何inner回報。

名稱inner只是對象的引用。

x = 42 

名稱x是一個int的參考。

def inner(): 
    pass 

名稱inner是對函數的引用。 x = inner其次是x()是完全有效的。

因此,返回一個名稱,任何名稱,只是返回一個對它引用的對象的引用,不管它是什麼。一個函數,一個整數,一個大象,不管。

相關問題