【发布时间】:2020-01-24 19:42:45
【问题描述】:
>>> a = 2
>>> b = 3
>>> c = 2
>>> b > a == c
True
>>>
b > a == c 等于 a < b and c == a 是否真的是因为它是一个链式比较?
这对我来说没有意义,因为 == 比较,我希望 b > a == c 等于 (b > a) == c 或 b > (a == c)。
【问题讨论】:
-
链式适用于任何比较运算符,
a op b op c等价于(a op b) and (b op c) -
a op b op c只需计算/加载一次b的行为略有不同,而(a op b) and (b op c)必须这样做两次。解决您的问题的重复的具体答案是Chaining comparison operators。 -
根据@Barmar operator priority 的评论在这种情况下不起作用,因为它是一个链式比较,导致
(a < b) and (c == a) -
@Massifox:不正确。所有比较运算符(除了布尔运算符
or、and和not)have equal precedence。括号只是阻止链接操作,因此您只需在括号内进行一个未链接的比较,结果用于括号外的未链接比较)。
标签: python comparison