Python:求值算术表达式的顺序

时间:2019-04-02 11:36:41

标签: python python-3.x

我刚刚读了https://courses.cs.washington.edu/courses/cse140/13wi/eval_rules.pdf 并在第5页的开头说,表达式

6 + 7 + 8

评估为:

13 + 8

然后到

21

如果是python中的情况,为什么?

2**1**2

评估为2而不是4

2 个答案:

答案 0 :(得分:2)

the documentation所述:

  

与一元运算符相比,幂运算符在其上的绑定更紧密   剩下;它的绑定不如一元运算符那么紧密。

和:

  

因此,在无括号的幂和一元运算符序列中,   运算符从右到左进行评估(这不限制   操作数的评估顺序):-1 ** 2得出-1。

答案 1 :(得分:1)

因此基于python 3.x文档页面(the-power-operator)

“因此,在无括号的幂和一元运算符序列中,运算符是从从右到左进行评估的(这不限制操作数的评估顺序):” -1 ** 2 “结果为-1”

因此,该表达式的计算结果为2 ^ 1(因为1 ^ 2 = 1)本身就是2(或换句话说,用方括号(2 ^(1 ^ 2))

希望有帮助