有人可以解释一下吗?

现在我们已经到了这里,它们与常规函数有何不同?

答案

Aλ只是一个匿名函数 - 一个没有名称定义的函数。

A关闭 是任何函数结束环境其中定义了它。

def func(): return h
def anotherfunc(h):
   return func()

这会导致错误,因为func才不是关闭 环境在anotherfunc-h未定义。func仅关闭全球环境。

def anotherfunc(h):
    def func(): return h
    return func()

因为在这里,func定义于anotherfunc,并且在 python 2.3 及更高版本(或类似这样的数字)中,当它们几乎 闭包正确(突变仍然不起作用),这意味着它结束 anotherfunc的环境并可以访问其中的变量。nonlocal关键词

另一个重要的一点——func将继续关闭anotherfunc的环境,即使它不再被评估anotherfunc

def anotherfunc(h):
    def func(): return h
    return func

print anotherfunc(10)()

这将打印 10。

正如您所注意到的,这与拉姆达s - 它们是两个不同(尽管相关)的概念。

来自: stackoverflow.com