在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
Run Code Online (Sandbox Code Playgroud)
如果maxsize为0,则队列永远不会满.
我的问题是它如何适用于这种情况?如何0 < 0 == 0被认为是假的?
>>> 0 < 0 == 0
False
>>> (0) < (0 == 0)
True
>>> (0 < 0) == 0
True
>>> 0 < (0 == 0)
True
Run Code Online (Sandbox Code Playgroud) 这是否符合我的想法?
assert 1 < 2 < 3
Run Code Online (Sandbox Code Playgroud)
我在文档中找不到任何对此的引用,但我在高代表回答中看到了它。
它似乎有效,但可能是运气,就像最左边的解析为True,然后True在另一个中使用。
我做了一些测试,它总是按预期工作,但我想找到一个来源(文档),明确说明它的意图。
>>> 1<2<3<4<5
True
>>> 1<2<7<4<5
False
>>> 1<2<3>2<5
True
Run Code Online (Sandbox Code Playgroud)
这排除了“最左优先”假设:
>>> 1<3<2
False
>>> (1<3)<2
True
Run Code Online (Sandbox Code Playgroud) python ×2