我遇到了这个表达式,我认为它应该评估为True,但它没有。
>> s = 1 in range(2)
>> s == True
>> True
上述声明按预期工作,但在此时:
1 in range(2) == True
执行,它的计算结果为False。
我试着寻找答案,但却找不到具体的答案。任何人都可以帮我理解这种行为吗?
答案 0 :(得分:12)
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
不等同于最好是多余的,最坏的有毒。
答案 1 :(得分:1)
尝试写
(1 in range(2)) == True
它与解析以及如何计算表达式有关。