代码之家  ›  专栏  ›  技术社区  ›  Mo Xu

为什么在Python中(1==2!=3)的计算结果为False?

  •  11
  • Mo Xu  · 技术社区  · 7 年前

    为什么 (1 == 2 != 3) 评估至 False 在Python中 ((1 == 2) != 3) (1 == (2 != 3)) 评估至 True ?

    这里使用什么运算符优先级?

    2 回复  |  直到 7 年前
        1
  •  19
  •   Kaushik NP    7 年前

    这是由于操作员 chaining phenomenon . Pydoc解释为:

    可以任意链接比较,例如:。, x<y<=z 是等效的 到 x<y和y<=z ,但y仅计算一次(但在两种情况下 当x<y被发现为false)。

    如果你看看 precedence == != 操作员,您会注意到他们有 相同优先级 因此适用于 连锁现象 .

    所以基本上会发生什么:

    >>>  1==2
    => False
    >>> 2!=3
    => True
    
    >>> (1==2) and (2!=3)
      # False and True
    => False
    
        2
  •  4
  •   clemens    7 年前

    像这样的链式表达 A op B op C 哪里 op 比较运算符是否与C相反,计算为( https://docs.python.org/2.3/ref/comparisons.html ):

    A op B and B op C
    

    因此,您的示例评估为

    1 == 2 and 2 != 3
    

    结果是 False .