【问题标题】:Multiple 'Or' conditional evaluator in Python [duplicate]Python中的多个“或”条件评估器[重复]
【发布时间】:2013-09-14 11:57:07
【问题描述】:

我是 Python 新手,最近了解了“或”条件评估器。有人可以向我解释为什么下面的代码给出'abcd':

     'abcd' or 'hijk' or 'lmno'

它不应该返回 True 吗?另外,Python 如何评估这些语句?它是先使用“hijk”还是“lmno”,还是评估“abcd”或“hijk”?基本上是从右到左还是从左到右?

【问题讨论】:

    标签: python conditional-statements


    【解决方案1】:

    这在documentation中有明确说明:

    表达式x and y首先计算x;如果xfalse,则返回其值;否则,将评估 y 并返回结果值。
    表达式x or y 首先计算x;如果xtrue,则返回其值;否则,y 被评估并返回结果值。

    【讨论】:

      【解决方案2】:

      a or b 在 Python 中的工作方式如下:

      • 如果bool(a) 计算结果为True,则表达式返回a(并且不是 True)。
      • 否则,表达式返回b

      由于bool('abcd')True'abcd' or <anything> 总是返回'abcd'

      【讨论】:

        【解决方案3】:

        易于检查:

        def cond(arg):
          print arg
          return arg
        
        print cond("a") or cond("b") or cond("c")
        

        打印两次“a”。 或者评估从左到右进行并且是惰性的,即一旦知道结果,它就会停止评估子表达式。
        非 None 的字符串值在作为条件求值时被视为 True(在这种情况下是布尔“或”表达式的一部分)。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-06-15
          • 1970-01-01
          • 2023-01-11
          • 1970-01-01
          • 2014-04-13
          • 1970-01-01
          • 1970-01-01
          • 2015-03-22
          相关资源
          最近更新 更多