在python lambda函数中使用OR运算符

时间:2017-06-02 04:57:07

标签: python lambda

在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()

2 个答案:

答案 0 :(得分:4)

Python中的每个功能都会返回一个值。如果没有显式的return语句,则返回NoneNone作为布尔表达式求值为False。因此,print会返回None,并且始终会评估or表达式的右侧。

答案 1 :(得分:2)

布尔or运算符通过从左到右依次计算候选对象来返回第一个出现的真值。因此,在您的情况下,它首先用于打印'Hello lambda world',因为它返回None(被认为是假的),然后它将评估结束您的程序的sys.exit()

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

Python Documentation

  

表达式x or y首先评估x;如果x为真,则其值为   回;否则,将评估y,结果值为   返回。