請幫我理解這是如何工作的。輸出爲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())
請幫我理解這是如何工作的。輸出爲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())
你x
總是等於4,因爲它不帶任何參數和if 1
總是True
。 然後你有沒有分配給任何變量的lambda表達式,也沒有在其他地方使用過。 最後,您打印出x
,如上所述,總是4
。
P.S.我強烈建議您閱讀Using lambda FunctionsDive into Python
讓我爲您翻譯。
您分配給x
a lambda
函數沒有參數。由於1始終評估爲true
,因此您總是返回外部定義的變量a
,其計算結果爲4.然後,您創建一個帶有一個參數x
的lambda函數,該函數不分配給變量/訪問名稱,因此它是永遠失去。 然後,你調用函數x
,它總是返回a
。輸出爲4
首先,讓我們刪除此行,因爲它不會做任何事情:
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
瞭解表達和陳述關鍵是要理解這樣的代碼之間的差異。
你的問題是什麼? 是關於if - else還是關於lambda表達式? –
你應該閱讀關於lambda函數。 – GAVD