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

时间:2014-12-31 21:47:04

标签: python operator-precedence

在Python中

>>> i = 3  
>>> -i**4  
-81

为什么-i**4未评估为(-i)**4,而是-(i**4)

我想有人可能会争辩说,提升到一个权力优先于i的(隐含)乘以减一(即你应该读-1*i**4)。 但是,在我学习数学的时候,-i**n n偶数和i正数,应该是积极的。

4 个答案:

答案 0 :(得分:11)

**运算符比Python中的-运算符绑定得更紧密。如果您想覆盖它,请使用括号,例如: (-i)**4

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

答案 1 :(得分:2)

幂运算符(**)的优先级高于一元否定(-)运算符。 -i**4被评估为-(i**4) - 即,您将3乘以4的幂,即81,然后将其否定,从而产生-81

答案 2 :(得分:2)

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

import math
i = 3
math.pow(-i,4)

这将产生正值。

如前所述:Exponentials in python x.**y vs math.pow(x, y),如果你想总是产生一个浮点数,那么这个选项(或者只是建立在pow()中)将是理想的选择。

答案 3 :(得分:0)

你必须做(-i)** 4才能得到肯定的结果。

*的优先级高于' - '。

如有疑问,请使用括号。 (或者,正如Amber建议的那样,请参考语言文档)