Python 中比较运算符的结合性是什么?三个比较很简单,但除此之外,我不确定它是如何做到的。它们似乎不具有右关联性或左关联性。
例如:
>>> 7410 >= 8690 <= -4538 < 9319 > -7092
False
>>> (((7410 >= 8690) <= -4538) < 9319) > -7092
True
所以,不是左关联的。
>>> 81037572 > -2025 < -4722 < 6493
False
>>> (81037572 > (-2025 < (-4722 < 6493)))
True
所以它也不是右结合的。
我见过一些地方它们被“束缚”,但是如果有四个或更多的比较,这是如何工作的呢?
链式比较扩展为and
, so:
a <= b <= c
becomes:
a <= b and b <= c
(b
不过只评估一次)。这在比较的语言参考 https://docs.python.org/2/reference/expressions.html#not-in.
请注意,惰性求值意味着如果a > b
,结果是False
and b
从未与c
.
你们带括号的版本完全不同;a <= (b <= c)
会评价b <= c
然后比较a
其结果是,and
根本不涉及,因此通过比较结果来确定关联性是没有意义的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)