逻辑与按位运算符AND

Cri*_*eri 3 python bitwise-operators logical-operators

我不明白之间的差别&and,即使我读了一些关于它的其他问题.

我的代码是:

f=1
x=1

f==1 & x==1
Out[60]: True

f==1 and x==1
Out[61]: True

f=1
x=2

f==1 and x==2
Out[64]: True

f==1 & x==2
Out[65]: False
Run Code Online (Sandbox Code Playgroud)

为什么它是第二个& False,而第一个是True

Ale*_*all 6

问题是&运营商的优先级高于==.

>>> (f == 1) & (x == 2)
True
>>> f == (1 & x) == 2
False
Run Code Online (Sandbox Code Playgroud)

也许这似乎不直观,但&实际上是在数字之间用于特定种类的计算:

>>> 3 & 5
1
Run Code Online (Sandbox Code Playgroud)

因此它具有与运算符类似的优先级,+并且*之前应合理地进行评估==.它并不意味着以类似的方式使用它and.