真不等于负<0

True not equal to negative<0

我觉得我在这里遗漏了一些简单的东西,但是谷歌搜索会带来很多通用结果:

将 True 与 x<0 的结果进行比较 returns 不直观的结果(即 True 不等于 -1<0)。我假设这一定是操作顺序,但两种顺序都不会产生相同的结果。

>>>True!=-1<0
True
>>> True!=(-1<0)
False
>>> (True!=-1)<0
False

这是怎么回事?

从这个答案 () 推断,我相信答案归结为运算符的链接。 !=< 具有相同的优先级,因此它们是从左到右计算的。但是由于链接,这似乎正在发生:

>>> (True != -1) and (-1 < 0)
True

将此与 OP 的原始代码进行比较:

>>> True != -1 < 0
True

我在上面发布的 Whosebug 答案的作者包括这个例子来解释链接:

0 < a < 1

被评估为

(0 < a) and (a < 1)

我认为是分别评估两个条件,而不是将它们分组。

取下面的:

>>> -1 != 0 < 1
True

它将其评估为 (-1 != 0) AND (0 < 1)

以你为例:

True != -1 => this is True
-1 < 0 => this is True

所以 2 True 的组合是 True。