Python 中的链式比较:揭开 0
在 Python 标准库代码的深处,Python 2.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
为什么这个表达式 0
链式比较:Python 的快捷方式
Python 有一个称为“链式比较”的独特功能,使表达范围比较更加简洁。例如,以下内容等效于使用链式比较:
0 < x <= 5
在内部,这些链式比较的解释不同。 Python 从左到右计算表达式,并返回第一个计算结果为 False 的比较的值。在我们的例子中,0
相反,当引入括号时,它们会强制其中的表达式的计算在下一个之前完成应用比较。这否定了链式比较行为。结果,添加括号后我们得到了预期的 True 值:
(0 < 0) == 0 0 < (0 == 0)
因此,full() 方法的表达式 0
self.maxsize == self._qsize(),如果 self.maxsize 为 0,则计算结果为 False,表示当大小限制设置为 0 时,队列永远不会满。以上是为什么 Python 中 `0 < 0 == 0` 的计算结果为 `False`?的详细内容。更多信息请关注PHP中文网其他相关文章!