为了账号安全,请及时绑定邮箱和手机立即绑定

你能解释一下闭包(因为它们与Python有关)吗?

你能解释一下闭包(因为它们与Python有关)吗?

素胚勾勒不出你 2019-08-16 14:07:13
你能解释一下闭包(因为它们与Python有关)吗?我一直在阅读很多关于闭包的内容,我认为我理解它们,但是没有为自己和他人蒙上阴影,我希望有人可以尽可能简洁明了地解释闭包。我正在寻找一个简单的解释,可以帮助我理解我想要使用它们的地点和原因。
查看完整描述

3 回答

?
BIG阳

TA贡献1859条经验 获得超6个赞

它很简单:一个函数引用包含范围的变量,可能在控制流离开该范围之后。最后一点非常有用:

>>> def makeConstantAdder(x):...     constant = x...     def adder(y):...         return y + constant...     return adder... >>> f = makeConstantAdder(12)>>> f(3)15>>> g = makeConstantAdder(4)>>> g(3)7

请注意,12和4分别在f和g内部“消失”,这个特性使f和g适当闭合。


查看完整回答
反对 回复 2019-08-16
?
偶然的你

TA贡献1841条经验 获得超3个赞

我喜欢这个粗略,简洁的定义

可以引用不再活动的环境的函数。

我补充一下

闭包允许您将变量绑定到函数中,而不将它们作为参数传递

接受参数的装饰器是闭包的常用用途。闭包是这种“功能工厂”的常见实现机制。在运行时通过数据修改策略时,我经常选择在策略模式中使用闭包。

在允许匿名块定义的语言中 - 例如,Ruby,C# - 闭包可用于实现(多少)新颖的新控制结构。缺少匿名块是Python中闭包的限制之一


查看完整回答
反对 回复 2019-08-16
  • 3 回答
  • 0 关注
  • 403 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信