猿问
回到首页
个人中心
反馈问题
注册登录
下载APP
首页
课程
实战
体系课
手记
专栏
慕课教程
'闭包'和'lambda'有什么区别?
'闭包'和'lambda'有什么区别?
有人能解释一下吗 我理解它们背后的基本概念,但我经常看到它们互换使用,我感到困惑。
现在我们在这里,它们与常规功能有什么不同?
慕哥6287543
浏览 819
回答 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无关- 它们是两个不同的(虽然相关)概念。
0
0
0
打开App,查看更多内容
随时随地看视频
慕课网APP
相关分类
源码
spark分组排序提取前N个值
1 回答
请问转让门店小程序需要源码吗?门店小程序有自己的源代码吗?是否要注册计算机软件著作权才可以交易?
1 回答
算法与数据结构
数据结构中,与所使用的计算机无关的数据是什么?
1 回答
学完C语言之后是先学数据结构还是先学JAVA好呢?
1 回答
继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续