在 Python 中无条件地使用逻辑运算符

Using logical operators in Python without a condition

这似乎是一个简单的问题,但我找不到先例。有一个回答here指出来但不说明原因

使用不带两个变量的逻辑运算符 returns 不是布尔值而是其中一个变量 - 第一个用于 OR,第二个用于 AND

'x' or 'y'
> 'x'

3 and 4
> 4

这种行为的原因是什么?

原因是这是对布尔表达式进行快捷计算的最有效方法。使用 or Python returns 它遇到的第一个 truthy 值。它不需要评估其余部分来发现表达式是否为真。同样,对于 and Python returns 它遇到的第一个 falsy 值。它不需要评估其余部分来发现表达式是否为假。

如果返回非布尔值让您感到困扰,请将对 bool() 的调用包裹在您的表达式中。