为什么会这样:
>> b = -1
>> b**2
1
可是:
>> -1**2
-1
如果我导入数学库,那没问题。
>> from math import pow
>> pow(b,2)
1.0
>> pow(-1,2)
1.0
答案 0 :(得分:12)
从Python文档: https://docs.python.org/3/reference/expressions.html#the-power-operator
电力运营商比其上的一元运营商绑定得更紧密 剩下;它比右边的一元运算符更紧密。
因此,在一个不明确的权力和一元运算符的序列中, 运算符从右到左进行评估(这不受约束 操作数的评估顺序):
-1**2
会产生-1
。
答案 1 :(得分:3)
它与运算符优先级有关。
尝试
(-1)**2
首先评估 **
,然后-
。因此,你得到-1
。
如果pow
功能,则首先评估-1
。
请参阅https://docs.python.org/2/reference/expressions.html#the-power-operator
上的参考资料答案 2 :(得分:2)
因为它在1上工作而不是-1整体。这将给出预期的结果。
(-1)**2