带有 If 语句和比较运算符的位运算符。这个 if 语句是如何工作的?

1 python if-statement bitwise-operators python-3.x

a = 2
b = 1
if a == 2 | b == 1:
    print(a, b)
Run Code Online (Sandbox Code Playgroud)

这不会打印 a & b 的值

a = 2
b = 1
if ((a == 2) | (b == 1)):
    print(a, b)
Run Code Online (Sandbox Code Playgroud)

这将打印值

为什么这样?

DYZ*_*DYZ 5

操作员==在Python具有比操作者优先级较低|。所以:

a == 2 | b == 1
Run Code Online (Sandbox Code Playgroud)

相当于:

a == (2 | b) == 1
Run Code Online (Sandbox Code Playgroud)

反过来,这相当于:

(a == (2 | b)) and ((2 | b) == 1)
Run Code Online (Sandbox Code Playgroud)

鉴于a==2,至少有一个子表达式必须为假,而不管b