AFAIK:Python:为什么False或'name'返回'name'而不是False?
and
,or
是布尔运算符和任何布尔表达式应该返回一个布尔值。
那么,为什么出现这种情况:
False or 'name'
回报'name'
而不是True
True and ''
回报''
,而不是False
请解释一下,Python是怎样处理的布尔表达式?
AFAIK:Python:为什么False或'name'返回'name'而不是False?
and
,or
是布尔运算符和任何布尔表达式应该返回一个布尔值。
那么,为什么出现这种情况:
False or 'name'
回报'name'
而不是True
True and ''
回报''
,而不是False
请解释一下,Python是怎样处理的布尔表达式?
不,在Python中or
和and
操作短路并返回最后一个评估项目。
表达
x and y
首先评估x
;如果x
为假,则返回其值;否则,将评估y
并返回结果值。表达式
x or y
首先评估x
;如果x
为真,则返回其值;否则,将评估y
并返回结果值。
如果必须有一个布尔值,使用bool()
:
>>> bool(False or 'name')
True
但是,当我在JavaScript和红宝石中尝试它时,它的工作原理与python中的一样。但是当我在C中尝试同样的短路时,它返回1和0,即布尔结果。由于我们使用的是cpython,它应该与C相同,但它不是。为什么? –
这是python,而不是C.它在Jython,PyPy和IronPython中是一样的。该语言指出这是如何工作的,并且在许多地方使用“副作用”;例如'某些变量=其他变量或后备'。 –
我不是说它是语言之间的斗争,我的意思是'和'和'or'是逻辑运算符,所以它们应该返回布尔结果,默认情况下。 –
Downvoter,请至少占有率什么可以改进? –