我得到了以下代码:
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)是如何工作的吗?
发布于 2019-06-22 12:37:56
首先要记住的是,lambdas是正则函数,它:
return该表达式的结果。因此,如果您感到困惑,始终可以将它们重写为带有名称的普通def函数。例如,foo可以变成:
def foo(f):
def foo_inner(x):
return f(x + 1) * 2
return foo_inner因此,使用任何函数(f)调用f返回一个新函数,该函数接受一个数字类型,向其添加一个数值,用该值调用f,并将结果加倍。
其余部分只是跟踪包装的多个层,我将留给您;一般来说,这不是一个有趣的问题。在使用像这样的工厂函数的实际代码中,意图和行为通常要清楚得多(因为它是为了某个目的而不是作为一个智囊团)。
https://stackoverflow.com/questions/56715496
复制相似问题