Python比较运算符从左到右链接/分组?
问题内容:
运算符优先级的Python文档指出:
相同框中的运算符从左到右分组(比较(包括测试)除外,它们的优先级和优先级从左到右都相同-
请参阅“比较…”部分)
这是什么意思?特别:
-
“同一框中的运算符从左到右分组(比较除外……)” -比较 不是 从左到右分组吗?
-
如果比较 没有 从左到右分组,它们将做什么?他们是“连锁”而不是“团体”吗?
-
如果比较是“链”而不是“组”,那么“链”和“组”之间有什么区别?
-
有哪些示例可以证明比较运算符从左到右而不是从右到左链接?
问题答案:
分组(这是非比较运算符的作用):
a + b + c means (a + b) + c
链接(这是比较运算符的作用):
a < b < c means (a < b) and (b < c)
从左到右分组(这是事物分组的方式):
5 - 2 - 1 means (5 - 2) - 1 == 2
而不是从右到左分组(这会产生不同的结果):
5 - (2 - 1) == 4
(编辑)
链接从左到右,所以在中a < b < c
,表达式a < b
在之前求值b < c
,如果a < b
为false,b < c
则不求值。
(2 < 1 < f())
在False
不调用函数的情况下给出值f
,因为2 < 1
计算结果为false,因此不需要执行第二次比较。
f() > 1 > g()
调用f()
以评估第一个比较,并且根据结果,它可能需要评估第二个条件,也可能不需要,这需要调用g()
。
https://zh.wikipedia.org/wiki/短路评估