在Python中
>>> i = 3
>>> -i**4
-81
为什么-i**4
未评估为(-i)**4
,而是-(i**4)
?
我想有人可能会争辩说,提升到一个权力优先于i
的(隐含)乘以减一(即你应该读-1*i**4
)。
但是,在我学习数学的时候,-i**n
n
偶数和i
正数,应该是积极的。
答案 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建议的那样,请参考语言文档)