我是Python新手,我最近了解了'或'条件评估器。有人可以向我解释为什么下面的代码给出'abcd':
'abcd' or 'hijk' or 'lmno'
它不应该返回True吗?另外,Python如何评估这些语句?它首先需要'hijk'或'lmno'还是评估'abcd'或'hijk'?基本上,它是从右到左还是从左到右?
答案 0 :(得分:5)
表达式
x and y
首先评估x
;如果x
为false
,则返回其值;否则,将评估y
并返回结果值 表达式x or y
首先评估x
;如果x
为true
,则返回其值;否则,将评估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。