【问题标题】:Comparison Operator Precedence and Binding比较运算符优先级和绑定
【发布时间】:2018-11-04 06:23:07
【问题描述】:

为什么表达式 1>=2==5

根据python 3的documentation,运算符>=,==,

1>=2==5<=4
=> False==5<=4
=> False<=4
=> True

我无法理解为什么这个表达式被评估为 False。我是 python 新手。谁能帮我理解这个运算符优先级?

【问题讨论】:

  • 他们没有说“从左到右装订”。他们说“Comparisons 部分中描述的从左到右 chaining 功能”

标签: python python-3.x


【解决方案1】:

根据文档,它没有从左到右完全评估。 and 是隐含的

这是假的,因为至少有一个(第一个)条件为假,导致短路评估

1>=2 and 2==5 and 5<=4
=> False and (doesn't matter)
=> False 

【讨论】:

    【解决方案2】:

    比较可以任意链接,例如,

    x

    1>=2==5

    1>=2 和 2==5 和 5

    您可以在 python here 中了解更多关于比较运算符的信息。

    【讨论】:

      【解决方案3】:

      比较可以任意链接,例如,1 &gt;= 2 == 5 &lt;= 4 等价于 1 &gt;= 2 和 2 == 5 和 5 &lt;= 4,除了 2 和 5 只计算一次(但在 1&gt;=2==5 情况下 @987654328当发现1 &gt;= 2 为假时,根本不评估@,如果2==5&lt;=4、4 根本不评估2 ==5 为假,则完全不评估@。
      请注意,1 &gt;= 2 == 5 &lt;= 4 并不意味着 1 和 4 以及 2 和 4 之间的任何比较。

      如果有帮助,请标记答案。

      【讨论】:

      • 请阅读问题。在这个问题中,我提到了表达式 results in False not True 并且我试图对此进行解释。我在代码部分分享了我的理解,而不是实际结果。
      猜你喜欢
      • 2021-08-27
      • 1970-01-01
      • 1970-01-01
      • 2021-09-02
      • 1970-01-01
      相关资源
      最近更新 更多