在Python中将数字提升到零的幂时的奇怪行为

jhr*_*hrf 2 python math

我使用的是Python 2.7.5.当将int提升到零的幂时,您可能会看到-1或1,具体取决于分子是正数还是负数.

直接键入python解释器会产生以下结果:

>>> -2418**0
-1
Run Code Online (Sandbox Code Playgroud)

这是正确的答案.但是当我输入同一个解释器时:

>>> result = -2481
>>> result**0
1
Run Code Online (Sandbox Code Playgroud)

答案是1而不是-1.使用此处建议complex内置对结果没有影响.

为什么会这样?

Wol*_*lph 7

你为什么期望它是-1?1是(根据我所教导的定义)正确的答案.

由于运算符优先级,第一个给出了错误的答案.

(-1)**0 = 1

-1**0 = -(1**0) = -(1) = -1
Run Code Online (Sandbox Code Playgroud)

有关0指数的定义,请参阅Wikipedia:http://en.wikipedia.org/wiki/Exponentiation#Zero_exponent