为什么" 1在范围(2)== True"评价为假?

时间:2018-02-23 08:54:48

标签: python

我遇到了这个表达式,我认为它应该评估为True,但它没有。

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

上述声明按预期工作,但在此时:

1 in range(2) == True
执行

,它的计算结果为False。

我试着寻找答案,但却找不到具体的答案。任何人都可以帮我理解这种行为吗?

2 个答案:

答案 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

它与解析以及如何计算表达式有关。