Python幂运算优先级
今天收到一位小伙伴的问题:为什么2**2**3是256不是64呢?
一个星号 * 在python的运算符中表示乘法
print(2*3)
结果会打印6,2×3=6这个简单。
** 在Python的运算符中代表幂运算
print(2**3)
结果会打印8,2×2×2=8。
那么问题来了 2**2**3 等于多少呢?
print(2**2**3)
结果是256。
我们都知道的运算优先级是,先乘除后加减,同级从左往右。
(1)(2**2**3)它的运算优先级是什么样子的呢?
从左往右是这样的((2**2)**3)
2×2=4,4×4×4=64,咿呀和python的运算结果不同,奇了怪了。
(2)从右往左?(2**(2**3))
2×2×2=8,2×2×2×2×2×2×2×2=256
运算结果对上了。
但是怎么解释呢?
我的理解供大家参考
在数学里普通运算都是左右维度的,例如:3+4×6、8+7÷4×6、9÷(3+4)-2
但是幂运算在数学里其实是上下维度的,例如:
、
幂运算计算的优先级是先上后下,在Python中把这样上下的维度写成左右维度。
于是上面的部分就写到了右边。
所以,你品,你细品。
2**2**3 =
(2**2)**3 =