Python中比较运算符的结合性

Joh*_*Doe 4 python comparison associativity comparison-operators

Python 中比较运算符的结合性是什么?三个比较很简单,但除此之外,我不确定它是如何做到的。它们似乎不是右关联或左关联。

例如:

>>> 7410 >= 8690 <= -4538 < 9319 > -7092        
False    
>>> (((7410 >= 8690) <= -4538) < 9319) > -7092 
True
Run Code Online (Sandbox Code Playgroud)

所以,不是左结合。

>>> 81037572 > -2025 < -4722 < 6493           
False
>>> (81037572 > (-2025 < (-4722 < 6493)))     
True
Run Code Online (Sandbox Code Playgroud)

所以它也不是右结合的。

我已经看到一些地方被“链接”了,但是这如何与四个或更多的比较一起工作?

jon*_*rpe 6

链式比较用 展开and,所以:

a <= b <= c
Run Code Online (Sandbox Code Playgroud)

变成:

a <= b and b <= c
Run Code Online (Sandbox Code Playgroud)

b虽然只评估一次)。这在关于比较语言参考中有解释。

请注意,惰性求值意味着 ifa > b的结果是False并且b永远不会与 进行比较c

你带括号的版本完全不同;a <= (b <= c)将评估b <= c然后a与结果进行比较,and根本不涉及,因此比较结果以确定关联性没有意义。


Ced*_*ric -1

您在类型方面犯了错误,当您编写81037572>-2025时,系统会将其视为TrueorFalse并将其与1and相关联0。因此,它会与这些二进制数进行比较。