为什么“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
等同于多余的东西,最坏的情况下是有毒的。
我遇到了这个表达式,我认为它的计算结果应该为 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
等同于多余的东西,最坏的情况下是有毒的。