为什么“1 in range(2) == True”的计算结果为 False?

Why does "1 in range(2) == True" evaluate to False?

我遇到了这个表达式,我认为它的计算结果应该为 True,但事实并非如此。

>> s = 1 in range(2)
>> s == True
>> True

上面的语句按预期工作但是当这个:

1 in range(2) == True

被执行,它的计算结果为 False。

我尝试寻找答案,但找不到具体的答案。谁能帮我理解这种行为?

试着写

(1 in range(2)) == True

它与解析以及表达式的计算方式有关。

1 in range(2) == True 是一个运算符链,就像你做 0 < 10 < 20

要让它成为现实,您需要

1 in range(2)

range(2) == True

两者都是正确的。后者是错误的,因此是结果。添加括号不再使运算符链接(一些运算符在括号中),这解释了 (1 in range(2)) == True 有效。

尝试:

>>> 1 in range(2) == range(2)
True

又一次吸取了很好的教训,不要将 == True!= False 等同于多余的东西,最坏的情况下是有毒的。