你能解释一下闭包(因为它们与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适当闭合。
偶然的你
TA贡献1841条经验 获得超3个赞
我喜欢这个粗略,简洁的定义:
可以引用不再活动的环境的函数。
我补充一下
闭包允许您将变量绑定到函数中,而不将它们作为参数传递。
接受参数的装饰器是闭包的常用用途。闭包是这种“功能工厂”的常见实现机制。在运行时通过数据修改策略时,我经常选择在策略模式中使用闭包。
在允许匿名块定义的语言中 - 例如,Ruby,C# - 闭包可用于实现(多少)新颖的新控制结构。缺少匿名块是Python中闭包的限制之一。
添加回答
举报
0/150
提交
取消