Python**运算符的关联性是什么?

Str*_*ria 7 python

我正在玩python命令行和**运算符,据我所知,它执行幂函数.所以2**3应该是(并且是)8因为2*2*2 = 8.

有人能解释我发现的行为吗?我没有看到任何方法将操作与括号分组以实际获得65536的结果,就像在这里获得的那样.

>>> 2 ** 2 ** 2
16
>>> 2 ** 2 ** 2 ** 2
65536
>>> (2 ** 2 ** 2) ** 2
256
Run Code Online (Sandbox Code Playgroud)

Jim*_*mmy 6

2** (2**(2**2))
Run Code Online (Sandbox Code Playgroud)

来自http://docs.python.org/reference/expressions.html

同一个框组中的操作符从左到右(除了比较,包括测试,它们都具有相同的优先级和从左到右的链 - 参见比较 - 和取幂,从右到左分组).


小智 5

它与左侧或右侧关联。要自己发现答案,请进行实验。

>>> 3 ** 3 ** 3
7625597484987
>>> (3 ** 3) ** 3
19683
>>> 3 ** (3 ** 3)
7625597484987
Run Code Online (Sandbox Code Playgroud)

因此,它关联到右边。

或者您可以阅读文档。google:“ python power”,第一个结果是 http://www.python.org/doc/2.5.2/ref/power.html

第二句话是:

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

确认实验结果。