Py学习  »  Python

python中意外的多运算符行为[重复]

Rocky Li • 5 年前 • 1484 次点击  
>>> 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 ...

我有没有漏掉一些显而易见的东西?(在Python2.7和Python3.4中测试)。

为了澄清,我理解最后三个片段。我问的是 第一 片段,为什么不同。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/44311
 
1484 次点击  
文章 [ 1 ]  |  最新文章 5 年前
user2357112
Reply   •   1 楼
user2357112    8 年前

这是一个链式的比较。你可能知道你可以

1 < 2 < 3

在python中,它相当于 (1 < 2) and (2 < 3) . (或许你没有,现在你知道了)同样的事情也适用于 in == .

5 in [1, 2, 3, 4] == False

相当于

(5 in [1, 2, 3, 4]) and ([1, 2, 3, 4] == False)

自从 [1, 2, 3, 4] 不等于 False ,整个表达式的计算结果为 .