为什么表达式(0 == 0& 1 == 1)评估为False?

时间:2017-10-17 05:05:04

标签: python operators operator-precedence

同样(-1 == - 1& 1 == 1)也是假的。

道歉,如果这是显而易见的事情,但我无法找到解释。

2 个答案:

答案 0 :(得分:14)

dplyr按位AND 运算符。正如documentation中所提到的,Bitwise运算符的优先级高于逻辑运算符,因此

&

变为

0 == 0 & 1 == 1

你可以想象它从那里走下坡路:

0 == (0 & 1) == 1

假设你想要的是一个逻辑AND ,那么python方式就是使用 0 == (0 & 1) == 1 => 0 == 0 == 1 => 0 == 0 and 0 == 1 => True and False => False

and

正如您所期望的那样,0 == 0 and 1 == 1 为您提供。

答案 1 :(得分:5)

让我们分手吧。

这里的最高优先级标志是括号。除了我们包装整个表达式,所以他们什么都不做。

接下来,我们使用按位运算符&

0 & 1等于0

这给我们留下了0 == 0 == 1

由于0不等于1,我们会得到False

供参考,这里是关于operator precedence的python文档。