2013-05-21 24 views
3

根據this answer,函數調用是一個語句,但在Coursera中,他們說函數調用是一個表達式。是一個函數調用Python中的表達式?

所以這是我的猜測:一個函數調用做一些事情,這就是爲什麼它是一個聲明,但它被稱爲後評估,並傳遞價值,這使得它也是一種表達。

是函數調用表達式嗎?

+0

術語「**做某事**」是非常含糊和誤導性的,不要太多地讀入單詞。 –

+0

我認爲答案有點令人困惑,或者甚至會引起誤解。但是如果你閱讀評論的答案,他們會解釋一切。 (其他答案也有幫助)。函數調用是一個表達式。由於任何表達式也是一個表達式語句,這意味着函數調用也是一個語句。 – abarnert

回答

11

呼叫是an expression;它在「表達式」參考文檔中列出。

如果是聲明,則不能將其用作表達式的一部分;陳述可以包含表達式,但不是其他方式。

作爲示例,return expression是一個聲明;它使用表達式來確定它的行爲;表達式的結果是當前函數返回的內容。您可以使用電話作爲表達的一部分:

return some_function() 

你不能,但是,使用return爲呼叫的一部分:

some_function(return) 

這將是一個語法錯誤。

這是return'做些事情';它結束函數並返回表達式的結果。這不是使函數返回的表達式本身。

如果蟒蛇電話是的表情,你就永遠無法混合呼叫等expression atoms成更復雜的表達式。

+0

哇!感謝大家! 謝謝你們,我靠了很多!在S.O.這裏第一次體驗真是太棒了! :) –

1

函數調用是表達式,所以你可以在報表如print=使用它們:

x = len('hello')  # The expression evaluates to 5 
print hex(48)   # The expression evaluates to '0x30' 

在Python中,函數是對象,就像整數和字符串。像其他對象一樣,函數具有屬性和方法。是什麼讓函數調用是__call__方法:

>>> def square(x): 
     return x * x 

>>> square(10) 
100 
>>> square.__call__(10) 
100 

括號分派到__call__方法。

這是Python工作原理的核心。希望你發現這些見解很有幫助。

+1

非常感謝您的時間!這真的很有用!我試圖選擇兩個答案,但我不能。學到了很多!祝一切順利! –

相關問題