2015-08-27 43 views
-1

我在這看到接受answer一個有關在Python lambda函數的問題,似乎括號周圍是什麼,在OP的問題,lambda函數定義,將導致其成爲評估。也許跨語言的標準行爲(正如我在Powershell中看到的那樣,here)?以this answer about tuples可能以某種方式。這一切都感到熟悉。但是有人可以提供Python文檔的鏈接(或者即使不存在也應該存在的簡潔文本),以解釋爲什麼括號會在Python中進行評估?爲什麼括號會在Python中引起評估?

您的回答將幫助我在列表解析中摘錄關於lambda函數的原始答案。

+2

*圓括號......一個lambda函數定義,將導致它被評估* - 沒有。這個答案中的'(x)'調用了這些lambda函數。 – thefourtheye

+1

圍繞定義*的括號不會導致函數調用。它們只是用於從其他語法中將lambda定義作爲表達式來分隔。它是下一組括號,'(x)'部分,表示*調用lambda。 – ely

+0

感謝您的回答,更新的題目不會客觀地錯誤。感謝評論者,並接受評論回答。 (或者實際上,似乎我必須等待7分鐘,然後才能接受答案,我很快會回來。) – talkaboutquality

回答

3

不,圍繞lambda的括號不會導致它被評估。他們在組的表達式中,將其與其他部分的較大表達區分開來。

這是遵循執行實際調用的lambda(x)

>>> lambda x: x*x 
<function <lambda> at 0x1076b3230> 
>>> (lambda x: x*x) 
<function <lambda> at 0x1076b32a8> 
>>> x = 10 
>>> (lambda x: x*x)(x) 
100 

如果您沒有使用括號,則(x)是由氧的功能,而不是封裝在表達式的一部分:

>>> lambda x: x*x(x) 
<function <lambda> at 0x1076b32a8> 

因爲lambda表達式的最低值爲precedence of all Python operators。有關使用括號的相關文檔是Parenthesized forms section

+0

只有在評論和anser之後,我纔看到我錯過了一個實際的'x'(帶括號的函數參數語法)被添加。感謝有關Python中優先級的更多信息! – talkaboutquality

相關問題