因为这完全是两种运算呀。咱不妨将32次幂变小一点,变成4次幂来试一下吧,对比print(2**2**4)和print((2**2)**4)的结果就知道了
>>> print(2**2**4)
65536
>>> print((2**2)**4)
256
可见print(2 ** 2 ** 32)并不是对(2**2)做32次幂,那么这到底是什么运算呢?我一个小白也不知道,只能试一哈,从小处开始:
>>> print(2**2**1)
4
>>> print(2**2**2)
16
>>> print(2**2**3)
256(在这里应该发现了,这是16的平方,也就是2的8次方,2**2**3是先算右侧!!!)
>>> print(2**2**4)
65536(这是2的16次方)
然后我去百度,知道了这么回事:
**是幂运算,优先级是右结合,a ** b即求a的b次方
右结合的意思是说多次幂运算先递归计算右边的结果: a ** b ** c = a ** ( b ** c)
这里2 ** 2 ** 3 = 2 ** (2 ** 3) = 2 ** 8 = 256
https://zhidao.baidu.com/question/691609587947341604.html