[英]Bitwise Operator with If Statement and comparison Operators. How does this if statement work?
a = 2
b = 1
if a == 2 | b == 1:
print(a, b)
这不会打印 a & b 的值
a = 2
b = 1
if ((a == 2) | (b == 1)):
print(a, b)
这将打印值
为什么这样?
Python 中的运算符==
的优先级低于运算符|
. 所以:
a == 2 | b == 1
相当于:
a == (2 | b) == 1
反过来,这相当于:
(a == (2 | b)) and ((2 | b) == 1)
鉴于a==2
,至少有一个子表达式必须为假,而与b
无关。
|
是按位OR
运算符,它的优先级高于==
。 因此,如果不使用括号,则2 | b
2 | b
在第一个程序的开始处执行。
(2 | b) -> (2 | 1) -> (3)
然后当检查a==3
时,它返回 False,因为a=2
我认为您可以使用or
代替|
如果您想通过检查 a 和 b 的值来执行该语句。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.