Python中的多个“或”条件赋值器

时间:2013-09-10 16:45:09

标签: python conditional-statements

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

     'abcd' or 'hijk' or 'lmno'

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

3 个答案:

答案 0 :(得分:5)

documentation

清楚地解释了这一点
  

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

答案 1 :(得分:3)

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

  • 如果bool(a)评估为True,则表达式返回a(并且 True)。
  • 否则,表达式返回b

由于bool('abcd')True'abcd' or <anything>始终会返回'abcd'

答案 2 :(得分:0)

易于检查:

def cond(arg):
  print arg
  return arg

print cond("a") or cond("b") or cond("c")

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