社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

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

Rocky Li • 5 年前 • 1466 次点击  
>>> 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
 
1466 次点击  
文章 [ 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 ,整个表达式的计算结果为 .