3

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

     'abcd' or 'hijk' or 'lmno'

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

4

3 回答 3

5

这在文档中有明确解释:

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

于 2013-09-10T16:47:22.393 回答
3

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

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

既然bool('abcd')True'abcd' or <anything>总是回报'abcd'

于 2013-09-10T16:47:28.080 回答
0

易于检查:

def cond(arg):
  print arg
  return arg

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

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

于 2013-09-10T16:50:18.870 回答