Lambda functions python 3



我得到了以下代码:

g = lambda x: x+7
foo = lambda f: (lambda x: f(x+1)*2)
print( g(3), (foo(g))(3), (foo(foo(g))((3) )

我可以解释一下(foo(foo(g))((3)是如何工作的吗?

首先要记住的是,lambda 是常规函数,它:

  1. 不要自动拥有名称
  2. 可用作表达式
  3. 必须由单个表达式组成
  4. 隐式return该表达式的结果

因此,如果您感到困惑,您可以随时将它们重写为带有名称的普通def函数。例如,foo可以变成:

def foo(f):
    def foo_inner(x):
        return f(x + 1) * 2
    return foo_inner

因此,使用任何函数(f(调用foo都会返回一个新函数,该函数采用数字类型,向其添加一个,使用值调用f,并将结果加倍。

其余的只是在这里追踪多层包装,我将留给您;一般来说,这不是一个有趣的问题。在使用此类工厂函数的实际代码中,意图和行为通常要清晰得多(因为它是出于某种目的,而不是作为脑筋急转弯(。

最新更新