我正在玩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)
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
第二句话是:
因此,在无括号的幂和一元运算符序列中,运算符从右到左进行评估(这不限制操作数的评估顺序)。
确认实验结果。
| 归档时间: |
|
| 查看次数: |
2531 次 |
| 最近记录: |