关于“==”和“!=”在Python中

2024-04-26 02:47:00 发布

您现在位置:Python中文网/ 问答频道 /正文

今天早上,我发现自己在写一些东西:

if (a == b == c):
  # do something

很惊讶它给了我预期的结果。在

我以为它会表现为:

^{pr2}$

但显然没有,似乎Python对第一个语句的处理方式与第二个语句不同,这很好,但我找不到任何有关这方面的文档或解释。在

我接受了测试:

In [1]: 2 == 2 == 2
Out[1]: True

In [2]: (2 == 2) == 2
Out[2]: False

有人愿意给我解释一下关于==(或!=)这种“链接”的规则是什么?在

非常感谢。在


Tags: in文档falsetrueif链接规则方式
3条回答

这适用于所有比较运算符-例如,您还可以执行以下操作:

>>> 4 < 5 < 6
True
>>> 4 < 5 !=2
True

一般来说,according to the documentationa op1 b op2 c,其中op1和{}是以下任何一种:<>!===<=>=isis notin或{}将得到相同的结果:

^{pr2}$

文件还说,这种方法可以任意多个比较,因此:

>>> 5 != '5' != 'five' != (3+2)
True

这有时可能是一个稍微令人困惑的结果,因为它似乎在说5 != (3+2)-每个操作数只与它相邻的操作数进行比较,而不是进行所有可能的组合(这可能从仅使用==的示例中看不清楚,因为如果所有操作都合理地定义__eq__,它不会影响答案)。在

据我所知,你所指的例子不是连锁的。在

2 == 2 == 2就像(2 == 2) and ( 2 == 2),结果是True and True

同时

(2 == 2) == 2就像(True) == 2

相关问题 更多 >