在O Reilly Programming 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 :(得分:4)
Python中的每个功能都会返回一个值。如果没有显式的return语句,则返回None
。 None
作为布尔表达式求值为False
。因此,print
会返回None
,并且始终会评估or
表达式的右侧。
答案 1 :(得分:2)
布尔or
运算符通过从左到右依次计算候选对象来返回第一个出现的真值。因此,在您的情况下,它首先用于打印'Hello lambda world'
,因为它返回None
(被认为是假的),然后它将评估结束您的程序的sys.exit()
。
lambda: print('Hello lambda world') or sys.exit()
表达式
x or y
首先评估x
;如果x
为真,则其值为 回;否则,将评估y
,结果值为 返回。