'闭包'和'lambda'有什么区别?

'闭包'和'lambda'有什么区别?

有人能解释一下吗 我理解它们背后的基本概念,但我经常看到它们互换使用,我感到困惑。

现在我们在这里,它们与常规功能有什么不同?


慕哥6287543
浏览 701回答 3
3回答

蝴蝶刀刀

一个拉姆达只是一个匿名函数-没有名字定义的函数。在某些语言中,例如Scheme,它们等同于命名函数。实际上,函数定义被重写为在内部将lambda绑定到变量。在其他语言中,如Python,它们之间存在一些(相当不必要的)区别,但它们的行为方式相同。甲闭合是任何功能关闭以上的环境中,它被定义。这意味着它可以访问不在其参数列表中的变量。例子:def func(): return hdef anotherfunc(h):    return func()这将导致错误,因为func未关闭环境anotherfunc- h未定义。func只关闭全球环境。这将有效:def anotherfunc(h):     def func(): return h     return func()因为在这里func定义anotherfunc,并且在python 2.3和更高版本(或者像这样的一些数字)中,当它们几乎使闭包正确时(变异仍然不起作用),这意味着它关闭了 anotherfunc环境并且可以访问内部的变量。它。在Python 3.1+,突变使用时也工作的nonlocal关键词。另一个重要的观点 - 即使不再被评估,func也会继续关闭anotherfunc环境anotherfunc。此代码也适用:def anotherfunc(h):     def func(): return h     return funcprint anotherfunc(10)()这将打印10。正如您所注意到的,这与lambda无关- 它们是两个不同的(虽然相关)概念。
打开App,查看更多内容
随时随地看视频慕课网APP