为了账号安全,请及时绑定邮箱和手机立即绑定

为什么表达式0<0=0在Python中返回false?

为什么表达式0<0=0在Python中返回false?

猛跑小猪 2019-06-19 14:42:22
为什么表达式0<0=0在Python中返回false?查看Python2.6中的Queue.py,我发现这个构造有点奇怪:def full(self):     """Return True if the queue is full, False otherwise     (not reliable!)."""     self.mutex.acquire()     n = 0 < self.maxsize == self._qsize()     self.mutex.release()     return n如果maxsize是0,队列从来没有满。我的问题是这个案子是如何运作的?多么,怎样0 < 0 == 0被认为是假的?>>> 0 < 0 == 0False>>> (0) < (0 == 0)True>>> (0 < 0) == 0True>>> 0 < (0 == 0)True
查看完整描述

3 回答

?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

我相信Python对于关系运算符的序列有特殊的案例处理,使范围比较更容易表达。更好的是能说0 < x <= 5比说(0 < x) and (x <= 5).

这些叫做链式比较..这是他们的文档链接。

对于您所讨论的其他情况,括号强制一个关系运算符在另一个之前应用,因此它们不再是链式比较。既然TrueFalse将值设为整数,可以从括号大小的版本中得到您所做的答案。


查看完整回答
反对 回复 2019-06-19
?
当年话下

TA贡献1890条经验 获得超9个赞

你所经历的奇怪行为来自于蟒蛇的连锁能力。因为它发现0不小于0,所以它决定整个表达式的计算结果为false。一旦将其分解为单独的条件,就会更改功能。它最初是在测试a < b && b == c你最初的声明a < b == c.

另一个例子:

>>> 1 < 5 < 3False>>> (1 < 5) < 3True


查看完整回答
反对 回复 2019-06-19
  • 3 回答
  • 0 关注
  • 879 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信