这似乎是一个简单的问题,但我找不到先例。一个答案here指出了这一点,但没有解释原因。
使用不带两个变量的逻辑运算符时,返回的不是布尔值,而是一个变量-第一个用于OR
,第二个用于AND
。
'x' or 'y'
> 'x'
3 and 4
> 4
这种行为的原因是什么?
答案 0 :(得分:3)
原因在于,这是快捷评估布尔表达式的最有效方法。使用or
,Python返回它遇到的第一个 truthy 值。无需评估其余部分即可发现表达式是否为真。同样,对于and
,Python返回它遇到的第一个 falsy 值。无需评估其余部分即可发现表达式是否为假。
如果让您烦恼的是您没有返回布尔值,请在您的表达式周围换一个对bool()
的调用。