Python:评估算术表达式的顺序

问题描述 投票:-3回答:2

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

6 + 7 + 8

被评估为:

13 + 8

然后到

21

如果在python中就是这种情况,为什么呢

2**1**2

评估为2而不是4

python python-3.x
2个回答
2
投票

正如the documentation提到的:

权力运算符比左边的一元运算符绑定得更紧密;它比右边的一元运算符更紧密。

和:

因此,在功率和一元运算符的未表示序列中,运算符从右到左进行求值(这不会约束操作数的求值顺序): - 1 ** 2得到-1。


1
投票

所以基于python 3.x docs页面(-power-operator)

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

所以,表达式被评估为2 ^ 1(as 1 ^ 2 = 1),它本身就是2(换句话说,用括号,(2 ^(1 ^ 2))

希望有所帮助

© www.soinside.com 2019 - 2024. All rights reserved.