首页>Program>source

运算符优先级的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 sectionComparisons...)

这是什么意思? 具体来说:

  1. "同一框中的运算符从左到右分组(除 比较...)"-比较组不是从左到右吗?

  2. 如果比较不是not从左到右分组,那么它们将做什么呢? 他们是"连锁"而不是"团体"吗?

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

  4. 将有什么示例来证明比较运算符从左到右而不是从右到左链接?

最新回答
  • 2021-1-11
    1 #

    分组(这是非比较运算符的作用):

    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 < bb < c之前进行评估 ,如果是 a < b 是假的, b < c 未评估。

    (2 < 1 < f()) 赋予值 False 无需调用 f函数 ,因为 2 < 1 计算结果为false,因此不需要执行第二次比较.

    f() > 1 > g()f() 为了评估第一个比较,并根据结果,它可能需要评估第二个条件,也可能不需要,这需要调用 g()

    https://en.wikipedia.org/wiki/短路评估

相关问题

  • ftp:来自PHP的SFTP
  • c#:RequestUrlReferrer为空?