【发布时间】:2017-10-17 05:05:04
【问题描述】:
同样 (-1==-1 & 1==1) 也是 False。
抱歉,如果这是显而易见的事情,但我找不到解释。
【问题讨论】:
-
使用
and进行逻辑和操作。&用于位操作。
标签: python operators operator-precedence
同样 (-1==-1 & 1==1) 也是 False。
抱歉,如果这是显而易见的事情,但我找不到解释。
【问题讨论】:
and 进行逻辑和操作。 & 用于位操作。
标签: python operators operator-precedence
& 是 按位与 运算符。在documentation中提到,位运算符的优先级高于逻辑运算符,所以
0 == 0 & 1 == 1
变成
0 == (0 & 1) == 1
你可以想象它从那里走下坡路:
0 == (0 & 1) == 1
=> 0 == 0 == 1
=> 0 == 0 and 0 == 1
=> True and False
=> False
假设你想要的是一个逻辑与,那么 python 的方法就是使用and:
0 == 0 and 1 == 1
如您所愿,它会为您提供True。
【讨论】:
让我们分开吧。
这里最高优先级的符号是括号。除了我们包裹整个表达式,所以他们什么都不做。
接下来是位运算符&。
0 & 1 等于 0。
这给我们留下了0 == 0 == 1
由于0 不等于1,我们得到False。
作为参考,这里是关于operator precedence的python文档。
【讨论】:
0 & 1 产生 0,而不是 1...0 & ANYINTEGER 产生 0。最终结果类似,但中间步骤错误。
|。谢谢:P