我刚刚阅读了https://courses.cs.washington.edu/courses/cse140/13wi/eval_rules.pdf,它在第5页的开头说,表达式
6 + 7 + 8
被评估为:
13 + 8
然后到
21
如果在python中就是这种情况,为什么呢
2**1**2
评估为2
而不是4
正如the documentation提到的:
权力运算符比左边的一元运算符绑定得更紧密;它比右边的一元运算符更紧密。
和:
因此,在功率和一元运算符的未表示序列中,运算符从右到左进行求值(这不会约束操作数的求值顺序): - 1 ** 2得到-1。
所以基于python 3.x docs页面(-power-operator)
“因此,在功率和一元运算符的无表示序列中,运算符从右到左进行评估(这不会限制操作数的评估顺序):” - 1 ** 2“结果为-1”
所以,表达式被评估为2 ^ 1(as 1 ^ 2 = 1),它本身就是2(换句话说,用括号,(2 ^(1 ^ 2))
希望有所帮助