Python中(-1)**2与-1**2结果不同的原因是什么?
Python中两个幂运算表达式的差异解释
核心原因是Python运算符优先级的规则差异:幂运算符**的优先级高于一元负号运算符-,括号会强制提升内部表达式的运算优先级,最终导致两个表达式运算顺序完全不同。
- 对于表达式
(-1)**2 == 1
括号强制优先计算内部的-1,得到负一之后再做平方运算,(-1) * (-1) = 1,因此等式成立。 - 对于表达式
-1**2 == -1
没有括号时,优先计算优先级更高的幂运算,先算1**2 = 1,再对结果取负得到-1,因此等式成立。
这个运算规则和通用的数学书写约定一致,数学领域中书写-1²时,默认语义也是-(1²) = -1,而非(-1)² = 1,如果要避免歧义最稳妥的方式就是主动加括号明确运算顺序。
内容的提问来源于stack exchange,提问作者Marzo Buffon
相关产品推荐
相关产品推荐

