Python比较运算符从左到右链接/分组?
作者:互联网
operator precedence的Python文档指出:
Operators in the same box group left to right (except for
comparisons, including tests, which all have the same precedence and
chain from left to right — see section 07001…)
这是什么意思?特别:
>“同一个盒子组中的运算符从左到右(除了
比较……)“ – 做比较不是从左到右分组?
>如果比较不是从左到右分组,那么他们做了什么呢?他们“链”而不是“群体”吗?
>如果比较“链”而不是“组”,“链接”和“分组”之间有什么区别?
>什么样的例子可以证明比较运算符从左到右而不是从右到左链接?
解决方法:
分组(这是非比较运算符所做的):
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
(编辑)
链接从左到右,因此在< b< c,表达式a< b在b 1> g()调用f()来计算第一个比较,并根据结果,它可能需要或可能不需要计算第二个条件,这需要调用g().
https://en.wikipedia.org/wiki/Short-circuit_evaluation
标签:associativity,python,operator-precedence,comparison 来源: https://codeday.me/bug/20190917/1809331.html