我不理解&
和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
?
答案 0 :(得分:6)
问题在于&
的运算符优先级高于==
。
>>> (f == 1) & (x == 2)
True
>>> f == (1 & x) == 2
False
也许这似乎不直观,但&
真正意味着在数字之间用于特定类型的计算:
>>> 3 & 5
1
所以它与+
和*
之类的运算符具有相似的优先级,明智地应该在==
之前进行评估。它并不意味着以与and
类似的方式使用。
答案 1 :(得分:1)
问题在于'&'优先级高于==
。如果你把你的最后一句话写成:
(f==1) & (x==2)
您将获得所需的结果。
答案 2 :(得分:1)
在第二种情况下,您的代码是:
f == (1 & x) == 2
1 & 2
为0:
00000001
00000010 &
--------
00000000
所以你的最后陈述看起来是:
1 == 0 == 2
哪个是False
。