2017-06-02 22 views
3

O Reilly編程Python書中有一個代碼示例,它在lambda函數中使用OR運算符。該文本指出「[代碼]使用or運算符來強制運行兩個表達式」。在Python lambda函數中使用OR運算符

這是如何工作的?

widget = Button(None, # but contains just an expression 
text='Hello event world', 
command=(lambda: print('Hello lambda world') or sys.exit())) 
widget.pack() 
widget.mainloop() 
+0

這隻適用於返回「falsey」值的函數,對我來說這意味着它的非明顯和糟糕的形式。 – tdelaney

+0

我剛剛失去了對該教科書的很多尊重...... – Shadow

回答

2

Python中的每個函數都返回一個值。如果沒有明確的返回語句,則返回NoneNone作爲布爾表達式計算爲False。因此,print返回None,並始終評估or表達式的右側。

1

布爾運算符or通過從左到右依次評估候選值來返回第一個出現的真值。所以在你的情況下,它被用來首先打印'Hello lambda world',因爲它返回None(被認爲是假的),然後它將評估sys.exit()哪個結束你的程序。

lambda: print('Hello lambda world') or sys.exit() 

Python Documentation

表達x or y首先評估x;如果x爲真,則返回值爲 ;否則,將評估y並返回結果值 。