Python比较运算符从左到右链接/分组?

Rob*_*ark 16 python comparison operator-precedence associativity

运算符优先级的Python文档说明:

同一个框组中的操作员从左到右(除了比较,包括测试,它们都具有相同的优先级和从左到右的链 - 参见比较部分......)

这是什么意思?特别:

  1. "从同一个盒子组中的操作员从左到右(除了比较......)" - 做比较不是从左到右分组?

  2. 如果比较不是从左到右分组,那么他们做了什么呢?他们"链"而不是"群体"吗?

  3. 如果比较"链"而不是"组","链接"和"分组"之间有什么区别?

  4. 什么样的例子可以证明比较运算符从左到右而不是从右到左链接?

khe*_*ood 23

分组(这是非比较运算符所做的):

a + b + c   means   (a + b) + c
Run Code Online (Sandbox Code Playgroud)

链接(这是比较运算符所做的):

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

从左到右分组(这是事物分组的方式):

5 - 2 - 1   means   (5 - 2) - 1 == 2
Run Code Online (Sandbox Code Playgroud)

而不是从右到左分组(这会产生不同的结果):

5 - (2 - 1) == 4
Run Code Online (Sandbox Code Playgroud)

(编辑)

链接从左到右,所以在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://en.wikipedia.org/wiki/Short-circuit_evaluation