【发布时间】:2019-04-01 13:11:48
【问题描述】:
print(1!=1 & 1!=1)
print(1!=1 & 2!=2)
为什么两者返回不同的值?
【问题讨论】:
-
&和|是 python 中的位运算符。 -
使用
and,因为&有其他含义。检查stackoverflow.com/questions/22646463/…
标签: python
print(1!=1 & 1!=1)
print(1!=1 & 2!=2)
为什么两者返回不同的值?
【问题讨论】:
& 和 | 是 python 中的位运算符。
and,因为& 有其他含义。检查stackoverflow.com/questions/22646463/…
标签: python
& 的precedence 比!= 高,所以你的语句相当于
print(1!=(1 & 1)!=1)
print(1!=(1 & 2)!=2)
1&1 是 1,1&2 是 0,* 所以这些等价于
print(1!=1!=1)
print(1!=0!=2)
因为!=支持chaining,所以这些等价于
print((1!=1) and (1!=1))
print((1!=0) and (0!=2))
相当于
print(False and False)
print(True and True)
相当于
print(False)
print(True)
(*如果您在想“这很奇怪,我认为在布尔上下文中评估时 1 和 2 都是 True。不应该将它们和-ing 一起评估为 True 吗?”,只有当您使用布尔 AND 运算符 and 而不是按位 AND 运算符 &。)
【讨论】: