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

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

我一直在阅读很多关于闭包的内容,我认为我理解它们,但是没有为自己和他人蒙上阴影,我希望有人可以尽可能简洁明了地解释闭包。我正在寻找一个简单的解释,可以帮助我理解我想要使用它们的地点和原因。



素胚勾勒不出你
浏览 404回答 3
3回答

BIG阳

它很简单:一个函数引用包含范围的变量,可能在控制流离开该范围之后。最后一点非常有用:>>> 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适当闭合。

偶然的你

我喜欢这个粗略,简洁的定义:可以引用不再活动的环境的函数。我补充一下闭包允许您将变量绑定到函数中,而不将它们作为参数传递。接受参数的装饰器是闭包的常用用途。闭包是这种“功能工厂”的常见实现机制。在运行时通过数据修改策略时,我经常选择在策略模式中使用闭包。在允许匿名块定义的语言中 - 例如,Ruby,C# - 闭包可用于实现(多少)新颖的新控制结构。缺少匿名块是Python中闭包的限制之一。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python