pow运算符的计算错误

cas*_*sso 14 python

应该print (-2 ** 2)返回什么?根据我的计算应该是4,但是翻译会返回-4.
这个Python的东西或我的数学是那么可怕吗?

vau*_*tah 24

根据文档,**具有更高的优先级-,因此您的代码相当于-(2 ** 2).要获得所需的结果,您可以将-2其括在括号中

>>> (-2) ** 2
4
Run Code Online (Sandbox Code Playgroud)

或使用内置pow功能

>>> pow(-2, 2)
4
Run Code Online (Sandbox Code Playgroud)

math.pow函数(返回float值)

>>> import math
>>> math.pow(-2, 2)
4.0
Run Code Online (Sandbox Code Playgroud)


Max*_*ant 5

**操作在减去之前完成.为了得到预期的结果,你应该这样做

print ((-2) ** 2)
Run Code Online (Sandbox Code Playgroud)

从文档:

因此,在功率和一元运算符的未表示序列中,运算符从右到左进行求值(这不会限制操作数的求值顺序):-1**2结果-1.

文档中还提供了运算符优先级的完整详细信息.你可以看到最后一行是(expr)在使用之前强制expr的哪一个,因此结果是(-2) ** 2 = 4