在Python中,为什么提升到均匀功率的负数仍然是负数?

Rol*_*Bly 8 python operator-precedence

在Python中

>>> i = 3  
>>> -i**4  
-81
Run Code Online (Sandbox Code Playgroud)

为什么-i**4不被评估为(-i)**4,但是-(i**4)

我想有人可能会争辩说,提升到一个权力优先于(隐含)乘以i减一(即你应该阅读-1*i**4).但是在那里我学到的数学,-i**nn连和i积极的,应该站出来正面.

Amb*_*ber 11

**运营商结合更加紧密比-运营商确实在Python.如果你想覆盖它,你可以使用括号,例如(-i)**4.

https://docs.python.org/2/reference/expressions.html#operator-precedence https://docs.python.org/3/reference/expressions.html#operator-precedence

  • 恕我直言,这是一个糟糕的实现。如果我写:-2 ** 2,我说的是负数的 2 次方,而不是减号运算符.... (2认同)

Mal*_*nge 5

您可以使用数学中的 pow() 函数。

import math
i = 3
math.pow(-i,4)
Run Code Online (Sandbox Code Playgroud)

这将产生正值。

如此处所述:Exponentials in python x.**y vs math.pow(x, y),如果您想始终生成浮点数,此选项(或仅在 pow() 中构建)将是理想的选择。