2016-06-15 38 views
0

請幫我理解這是如何工作的。輸出爲4if和else python lambda表達式

a=4 
b=7 

x=lambda: a if 1 else b 
lambda x: 'big' if x > 100 else 'small' 
print(x()) 
+2

你的問題是什麼? 是關於if - else還是關於lambda表達式? –

+1

你應該閱讀關於lambda函數。 – GAVD

回答

0

x總是等於4,因爲它不帶任何參數和if 1總是True。 然後你有沒有分配給任何變量的lambda表達式,也沒有在其他地方使用過。 最後,您打印出x,如上所述,總是4

P.S.我強烈建議您閱讀Using lambda FunctionsDive into Python

0

讓我爲您翻譯。

您分配給x a lambda函數沒有參數。由於1始終評估爲true,因此您總是返回外部定義的變量a,其計算結果爲4.然後,您創建一個帶有一個參數x的lambda函數,該函數不分配給變量/訪問名稱,因此它是永遠失去。 然後,你調用函數x,它總是返回a。輸出爲4

3

首先,讓我們刪除此行,因爲它不會做任何事情:

lambda x: 'big' if x > 100 else 'small' 

lambda表達式定義,但從來沒有叫。它的參數也被稱爲x與代碼的其餘部分無關。

讓我們看看剩下:

a = 4 
b = 7 

x = lambda: a if 1 else b 

print(x()) 

這裏x成爲一個功能,因爲它包含的代碼。該lambda形式只能包含表達式,沒有語句,所以它使用的if表達形式,它是向後看:

真實的結果,如果條件否則假結果

在這種情況下,條件是1,它始終爲真,因此函數x()的結果始終爲a的值,該值在代碼中早先分配給4。實際上,x()行爲,如:

def x(): 
    return a 

瞭解表達陳述關鍵是要理解這樣的代碼之間的差異。