Herb Sutter 在他的
cppfront
中仅实现了链式比较的子集,并在他的主题演讲 (https://youtu.be/fJvPBHErF2U?si=RqcR661yBzcQ8r5_&t=850) 中指出 a >= b < c
“在数学上不合理”:
数学教科书中充满了诸如
a > b < c
等表示最小值或 a >= b < c
表示单边最小值的表达式。这些连锁的同情心在数学上有什么不合理之处?
通常我们将
a < b < c
写为 a < b
、b < c
和 a < c
的简写。假设情况确实如此,并且 <, >, <=, >=
是传递性的(通常是这种情况),那么写成 a < b > c
将意味着 a < b
、b < c
和 a > c
始终为假。当且仅当 a <= b > c
和 a = b
时,写 b > c
才可能为真,但这仍然不是 Python 的解释。
在Python中,写作
a < b > c
,意味着a < b
,而b > c
,a
和c
之间没有进行比较,这意味着该陈述可能是正确的。同样,对 a <= b > c
的解释也完全不同,因为在很多情况下 a != b
并且该陈述仍然正确。