我是 Python 新手,最近了解了“或”条件评估器。有人可以向我解释为什么以下代码给出'abcd':
'abcd' or 'hijk' or 'lmno'
它不应该返回 True 吗?另外,Python 如何评估这些语句?它是先使用“hijk”还是“lmno”,还是评估“abcd”或“hijk”?基本上,是从右到左还是从左到右?
我是 Python 新手,最近了解了“或”条件评估器。有人可以向我解释为什么以下代码给出'abcd':
'abcd' or 'hijk' or 'lmno'
它不应该返回 True 吗?另外,Python 如何评估这些语句?它是先使用“hijk”还是“lmno”,还是评估“abcd”或“hijk”?基本上,是从右到左还是从左到右?
这在文档中有明确解释:
表达式
x and y
首先计算x
; 如果x
是false
,则返回其值;否则,y
评估并返回结果值。
表达式x or y
首先计算x
; 如果x
是true
,则返回其值;否则,y
评估并返回结果值。
Python中的工作方式a or b
如下:
bool(a)
计算结果为True
,则表达式返回a
(而不是 True
)。b
。既然bool('abcd')
是True
,'abcd' or <anything>
总是回报'abcd'
。
易于检查:
def cond(arg):
print arg
return arg
print cond("a") or cond("b") or cond("c")
打印“a”两次。或者评估从左到右进行并且是惰性的,即一旦知道结果,它就停止评估子表达式。
当作为条件评估时,非 None 的字符串值被视为 True(在这种情况下是布尔“或”表达式的一部分)。