任何人都可以帮助我理解为什么我得到以下布尔表达式的奇怪结果。 所有这三个代码片段应该是“等效的”,但都会产生不同的结果。结果似乎与围绕运算符优先级的python文档相矛盾。
x = 1
y = 0
print(x > y) #prints True
print(x > y == True) #prints False *?*
print(x > y == False) #prints True *?*
print( (x > y) == True) #prints True
print( (x > y) == False) #prints False
注意第二个&第3行输出与第4和第5行相矛盾。
然后在下面,与上面相同的2行产生不同的结果:
x = 2
y = 1
print(x > y) #prints True
print(x > y == True) #prints True *?*
print(x > y == False) #prints False *?*
print( (x > y) == True) #prints True
print( (x > y) == False) #prints False
再次在下面,甚至有不同的结果:
x = 8
y = 5
print(x > y) #prints True
print(x > y == True) #prints False *?*
print(x > y == False) #prints False *?*
print( (x > y) == True) #prints True
print( (x > y) == False) #prints False
这似乎也与以下明显的矛盾有关:
print(1 in [0, 1, 2, 3]) #prints True
print(1 in [0, 1, 2, 3] == True) #prints False
我知道不需要“== True”,但学生第一次学习的自然也会使用该表达式。
谢谢!