【发布时间】:2021-04-01 14:22:11
【问题描述】:
我觉得我在这里遗漏了一些简单的东西,但是谷歌搜索会带来很多通用结果:
将 True 与 x
>>>True!=-1<0
True
>>> True!=(-1<0)
False
>>> (True!=-1)<0
False
这是怎么回事?
【问题讨论】:
标签: python logic comparison-operators
我觉得我在这里遗漏了一些简单的东西,但是谷歌搜索会带来很多通用结果:
将 True 与 x
>>>True!=-1<0
True
>>> True!=(-1<0)
False
>>> (True!=-1)<0
False
这是怎么回事?
【问题讨论】:
标签: python logic comparison-operators
我认为它是分别评估这两个条件,而不是对它们进行分组。
以下内容:
>>> -1 != 0 < 1
True
将其评估为(-1 != 0) AND (0 < 1)。
用你的例子:
True != -1 => this is True
-1 < 0 => this is True
所以 2 True 的组合为 True。
【讨论】:
从这个答案 (https://stackoverflow.com/a/7479836/5666087) 推断,我相信答案归结为运算符的链接。 != 和 < 具有相同的优先级,因此从左到右计算它们。但是由于链接,这似乎正在发生:
>>> (True != -1) and (-1 < 0)
True
将此与OP的原始代码进行比较:
>>> True != -1 < 0
True
我在上面发布的 StackOverflow 答案的作者包括这个例子来解释链接:
0 < a < 1
评估为
(0 < a) and (a < 1)
【讨论】: