【发布时间】:2021-09-29 17:02:29
【问题描述】:
为什么当我在 python 中写 -2 ** 2 结果是 -4 但我的 lambda 函数返回 4 任何人都可以解释为什么会发生这种情况
two = lambda: 2
sqr = lambda x: x * x
pwr = lambda x, y: x ** y
for a in range(-2, 3):
print(sqr(a), end=" ")
print(a,"**",two(),"=",pwr(a, two()))
【问题讨论】:
-
“我们都知道”是什么意思?为什么您期望
-4作为答案?负 2 的 2 次方是 4。 -
"我们都知道-2 ** 2 = -4" 只是因为优先级。
-2 ** 2是-(2 ** 2),确实是 -4。但是(-2) ** 2是 4,这就是您的 lambda 在应用于参数-2和2时计算的值。 -
@sepp2k 你是对的,Python 的
**运算符的绑定显然令人困惑,足以保证在答案中进行解释。例如,-2**2是-4,因为**在左侧具有更高的优先级,但同时2**-2是有效的并且等于0.5,因为一元减号在**
标签: python function math lambda