【问题标题】:How is 1 == 2 == 2 evaluated? [duplicate]如何评估 1 == 2 == 2? [复制]
【发布时间】:2026-02-02 09:50:01
【问题描述】:

在 REPL 中运行它给了我

>>> 1 == 2 == 2
False

令我惊讶的是,在 C 语言中,这将评估为 1。我预计右侧的评估结果为 True,而1 == True 在 Python 中是 True。例如,这会像我预期的那样评估:

>>> 1 == (2 == 2)
True

Python 如何解析和评估第一个表达式?这个,评估方式相同,但这是我所期望的,因为== 是右关联的,并且在 C 中会评估为 0

>>> 2 == 2 == 1
False

【问题讨论】:

  • == 是一个比较运算符,所以这是被链接的,即(1 == 2) and (2 == 2)。这与1 < 2 < 2 相同
  • 比较从左到右进行评估。请参阅文档中的Operator precedence

标签: python


【解决方案1】:

这是由于运营商chaining phenomenon

一个例子:

>>>  1==2
=> False
>>> 2!=3
=> True

>>> (1==2) and (2!=3)
  # False and True
=> False

【讨论】:

  • 啊,谢谢!这对我来说很有意义
  • 一个快乐的伙伴,我上次编码时在文档中发现了这个,所以它是我的最爱。