- 此问题在此处已有答案**:
python operator precedence of in and comparison [duplicate](3个答案)
6年前关闭。
>>> 5 in [1, 2, 3, 4] == False
False
我知道这是一个奇怪的方式来测试会员资格,
>>> 5 not in [1, 2, 3, 4]
True
是"正确"的方式,令我困惑的是它的行为与两者不同
>>> (5 in [1, 2, 3, 4]) == False
True
以及
>>> 5 in ([1, 2, 3, 4] == False)
TypeError ...
我错过了一些明显的东西吗?(在Python 2.7和Python 3.4中测试过)。
澄清一下,我理解最后三个代码段,我问的是第一个代码段的行为,以及为什么它是不同的。
1条答案
按热度按时间cyvaqqii1#
这是一个连锁比较。你可能知道你可以
在Python中,它等价于
(1 < 2) and (2 < 3)
。(也许你以前没有,现在你知道了。)同样的道理也适用于in
和==
。相当于
由于
[1, 2, 3, 4]
不等于False
,因此整个表达式的计算结果为False
。