在 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()
的调用包裹在您的表达式中。
这似乎是一个简单的问题,但我找不到先例。有一个回答here指出来但不说明原因
使用不带两个变量的逻辑运算符 returns 不是布尔值而是其中一个变量 - 第一个用于 OR
,第二个用于 AND
。
'x' or 'y'
> 'x'
3 and 4
> 4
这种行为的原因是什么?
原因是这是对布尔表达式进行快捷计算的最有效方法。使用 or
Python returns 它遇到的第一个 truthy 值。它不需要评估其余部分来发现表达式是否为真。同样,对于 and
Python returns 它遇到的第一个 falsy 值。它不需要评估其余部分来发现表达式是否为假。
如果返回非布尔值让您感到困扰,请将对 bool()
的调用包裹在您的表达式中。