【问题标题】:Why does False==False in [False] return True? [duplicate]为什么 [False] 中的 False==False 返回 True? [复制]
【发布时间】:2015-12-08 18:15:00
【问题描述】:

我的一位前辈演示了它,我想知道这是否是一个缺陷,或者是否有一些优先级和运算符关联性可以证明它的合理性。

>>> False==False in [False]
True

【问题讨论】:

  • 这可能是 Python 著名的比较运算符链接的一个例子(因此这将与 False == False and False in [False] 相同)。不过我不确定……
  • 不知道,但从这里的答案:stackoverflow.com/questions/34163067/… - 这可能是由于它的处理方式。 (False==False) in [False]
  • False 替换为1 会更清晰
  • @letsc:不,它没有,因为False 在数字上是 0,而不是 1。
  • @PadraicCunningham 无论优先级如何,(False == False) in [False]False == (False in [False]) 都是 False。所以,它是链式的。

标签: python


【解决方案1】:

Python 的comparison operators 链。

False == False in [False]

被评估为

(False == False) and (False in [False])

中期参与这两个比较。

我希望 in 不与其他比较运算符链接。

【讨论】:

  • 链接运算符以使x < y < z 之类的表达式合法的唯一原因是什么?因为如果是这样的话,虽然它很方便,但这似乎是一个小小的好处,以换取像 (False==False in [False])==True 这样的混乱代码是合法的。
  • 我不知道将in 与其他产生清晰代码的比较运算符链接的用例。
  • 史蒂文,你可以通过不做这种愚蠢的事情来避免试图在脚上开枪。没有人强迫您编写无法维护的代码 :-)
猜你喜欢
  • 2021-11-10
  • 2015-10-03
  • 2013-09-18
  • 2015-09-30
  • 1970-01-01
  • 1970-01-01
  • 2015-06-22
  • 1970-01-01
  • 2019-02-08
相关资源
最近更新 更多