奇怪的python行为

ffo*_*orw 7 python ipython

我很无聊并且玩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 =非常巨大


Mar*_*ote 7

**运算符的优先级使得评估从右向左(而不是从预期的从左到右).换一种说法:

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