我不理解 &
和 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
为什么第二个
&
是False
,而第一个是True
?我不理解 &
和 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
&
是False
,而第一个是True
?&
的运算优先级高于==
。>>> (f == 1) & (x == 2)
True
>>> f == (1 & x) == 2
False
&
在特定的计算中确实应该被用于数字之间:>>> 3 & 5
1
因此,它的优先级类似于像+
和*
这样的运算符,这些运算符在==
之前应该被合理地评估。它并不像and
一样被用于类似的方式。
==
。如果你把最后一条语句写成这样:(f==1) & (x==2)
您将获得您期望的结果。
。
f == (1 & x) == 2
1 & 2
is 0:
00000001
00000010 &
--------
00000000
1 == 0 == 2
哪个是 False
。
逻辑与 (and
) 会给你一个真或假的答案 (布尔值),而按位与 (&
) 运算符会将数字转换为二进制并在数字上应用真值表,然后给你一个数字答案。