Python IDLE中幂运算符计算-1²出现异常结果的原因咨询
为什么Python中
-1 ** 2的结果是-1而不是1? 核心原因是Python运算符的优先级规则:
- 幂运算符
**的优先级高于一元负号-,所以-1 ** 2会被Python解析为-(1 ** 2)——先计算1的平方得到1,再对结果取负,最终输出-1。 - 对于
pow(-1, 2),函数会直接将第一个参数-1作为整体进行平方运算,自然得到1。 - 而
my_var **= 2这种赋值运算,会先取变量my_var的当前值(也就是-1),再执行平方操作,等价于my_var = (-1) ** 2,所以结果也是1。
如果想直接计算-1的平方,正确的写法是给-1加括号:(-1) ** 2,这样就能得到预期的1。
内容的提问来源于stack exchange,提问作者user1026169
相关产品推荐
相关产品推荐

