Rob*_*ark 16 python comparison operator-precedence associativity
运算符优先级的Python文档说明:
同一个框组中的操作员从左到右(除了比较,包括测试,它们都具有相同的优先级和从左到右的链 - 参见比较部分......)
这是什么意思?特别:
"从同一个盒子组中的操作员从左到右(除了比较......)" - 做比较不是从左到右分组?
如果比较不是从左到右分组,那么他们做了什么呢?他们"链"而不是"群体"吗?
如果比较"链"而不是"组","链接"和"分组"之间有什么区别?
什么样的例子可以证明比较运算符从左到右而不是从右到左链接?
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
| 归档时间: |
|
| 查看次数: |
2309 次 |
| 最近记录: |