Python中直接写-2**2结果为-4但lambda函数返回4的原因是什么
问题原因解答
这是Python运算符优先级规则和变量传参的求值逻辑差异导致的,具体如下:
- 直接运行
-2 ** 2返回-4的原因:Python中幂运算符**的优先级高于一元负号-,因此表达式会先计算2 ** 2 = 4,再对结果取负,等价于执行-(2 ** 2),最终得到-4。 - 示例代码中返回4的原因:当你把
-2作为参数传入pwr和sqr函数时,参数x是完整的负数-2,负号是数值本身的组成部分,不需要再和幂运算符比较优先级。实际执行的运算等价于(-2) ** 2或(-2) * (-2),结果自然是4。
你可以直接运行(-2) ** 2验证,得到的结果和代码输出一致,两者的运算逻辑本质上就不一样。
内容的提问来源于stack exchange,提问作者Flàyn
相关产品推荐
相关产品推荐

