真不等于负<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。
我觉得我在这里遗漏了一些简单的东西,但是谷歌搜索会带来很多通用结果:
将 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。