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

我已经阅读了很多有关闭包的文章,我想我理解它们,但是我希望自己能为自己和其他人提供一个清晰而清晰的解释。我正在寻找一个简单的解释,可能有助于我理解在哪里以及为什么要使用它们。


阿波罗的战车
浏览 206回答 3
3回答

DIEA

封闭封闭对象是带有方法的数据,闭包是带有数据的函数。def make_counter():    i = 0    def counter(): # counter() is a closure        nonlocal i        i += 1        return i    return counterc1 = make_counter()c2 = make_counter()print (c1(), c1(), c2(), c2())# -> 1 2 1 2

湖上湖

很简单:一个函数可以从包含的作用域引用变量,可能是在控制流离开该作用域之后。最后一点非常有用:>>> 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正确闭合。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python