我很无聊并且玩ipython控制台并且遇到了以下我不太了解的行为
In [1]: 2**2
Out[1]: 4
In [2]: 2**2**2
Out[2]: 16
In [3]: 2**2**2**2
Out[3]: 65536
In [4]: 2**2**2**2**2
Run Code Online (Sandbox Code Playgroud)
[4]的答案不是 4294967296L,这是一个非常长的数字,但我无法弄清楚为什么.
这个数字可以在这里找到:http://pastie.org/475714
(Ubuntu 8.10,python 2.5.2,ipython 0.8.4)
(Mac OS X 10.5.6,Python 2.5.1)
Alb*_*oPL 16
Python正在向右转向数学幂运算.例如,IN [2]正在做:
2**(4)= 16
IN [3] = 2 2 2 2 = 2 2**(4)= 2**16 = 65536
如果您希望从左到右计算,则需要括号.OUT [4]没有输出你想要的答案的原因是因为数字是天文数字而Python无法打印出来.
2 ^ 65536 =非常巨大
**运算符的优先级使得评估从右向左(而不是从预期的从左到右).换一种说法:
2**2**2**2 == (2**(2**(2**2)))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
362 次 |
| 最近记录: |