【问题标题】:The lambda function result is mathematically wronglambda 函数结果在数学上是错误的
【发布时间】: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 在应用于参数 -22 时计算的值。
  • @sepp2k 你是对的,Python 的 ** 运算符的绑定显然令人困惑,足以保证在答案中进行解释。例如,-2**2-4,因为** 在左侧具有更高的优先级,但同时2**-2 是有效的并且等于0.5,因为一元减号在**

标签: python function math lambda


【解决方案1】:

** 运算符比 Python 中的 - 运算符绑定得更紧密。如果你想覆盖它,你会使用括号,例如(-i)**4

【讨论】:

    猜你喜欢
    • 2016-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-11
    • 1970-01-01
    • 1970-01-01
    • 2015-05-22
    相关资源
    最近更新 更多