Python 为什么`-(num)**(偶数)`会给出`-(num^(偶数))`作为结果?
我注意到有点奇怪 为什么-5**2给出-25,而math.pow(-5,2)给出25?答案应该是25。那么-25答案的原因是什么呢Python 为什么`-(num)**(偶数)`会给出`-(num^(偶数))`作为结果?,python,python-2.7,Python,Python 2.7,我注意到有点奇怪 为什么-5**2给出-25,而math.pow(-5,2)给出25?答案应该是25。那么-25答案的原因是什么呢 >>> -5**2 -25 >>> -5**4 -625 >>> 5**2 25 >>> 5**4 625 >>> import math >>> pow(-5,2) 25 >>> pow(-5,4) 625 >>> fo
>>> -5**2
-25
>>> -5**4
-625
>>> 5**2
25
>>> 5**4
625
>>> import math
>>> pow(-5,2)
25
>>> pow(-5,4)
625
>>>
formath.pow
指定将x
提升到y
的幂
因此,
math.pow
计算(-5)**4
。而仅仅写-5**4
相当于-1*5**4
,因为在Python中,一元运算符-
的优先级低于幂运算符**
这是因为python中的运算符优先级
如果我们查看,我们会发现一元运算符-x
的优先级低于幂运算符x**y
,因此表达式-5**2
表示首先将平方应用于5,然后将负号应用于结果。第一个运算得到25,然后得到-25
表达式
math.pow(-5,2)
表示将-5平方。这相当于(-5)**2
这是因为-
运算符的优先级低于幂运算符**
。事实上,您的表达式将按以下方式计算:
>>> -(5 ** 2)
请尝试以下操作以获得正确的结果:
>>> (-5) ** 2
25
有关更多信息,请阅读:
下表总结了Python中运算符的优先级,从最低优先级(最少绑定)到最高优先级(最多绑定)
这些都解释清楚了
幂运算符比其左边的一元运算符绑定得更紧;它的绑定不如右边的一元运算符紧密
因此,在幂运算符和一元运算符的非递归序列中,运算符从右向左求值(这不限制操作数的求值顺序):-1**2导致-1
在Python中,
**
运算符的值大于-
运算符的值,因此在表达式中,5**2
首先求值,然后求反。可以先使用括号应用否定:
>>> -5**2
-25
>>> (-5)**2
25
简单回答:操作顺序请不要将图像作为代码发布,@BhargavRao-会记住这一点。谢谢。请注意,您不需要导入数学,
pow
是一个内置函数。@BurhanKhalid-谢谢您的编辑。我是Python新手。因此,我不知道我不需要导入数学模块。谢谢你送来那张便条。