相关疑难解决方法(0)

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

在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)

python

133
推荐指数
5
解决办法
6748
查看次数

单个语句中的多个比较运算符(链接比较运算符)

这是否符合我的想法?

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

9
推荐指数
1
解决办法
4368
查看次数

标签 统计

python ×2