【问题标题】:Use of OR operator in python lambda function在 python lambda 函数中使用 OR 运算符
【发布时间】:2017-06-02 04:57:06
【问题描述】:

O Reilly Programming Python 书中有一个代码示例,它在 lambda 函数中使用了 OR 运算符。文本指出“[代码] 使用 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()

【问题讨论】:

  • 这只适用于返回“假”值的函数,对我来说这意味着它的形式不明显且非常糟糕。
  • 我对那本教科书失去了很多尊重......

标签: python lambda


【解决方案1】:

Python 中的每个函数都返回一个值。如果没有明确的 return 语句,则返回 NoneNone 作为布尔表达式计算为 False。因此,print 返回 None,并且始终计算 or 表达式的右侧。

【讨论】:

    【解决方案2】:

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

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

    Python Documentation

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-13
      • 1970-01-01
      • 1970-01-01
      • 2015-07-08
      相关资源
      最近更新 更多