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

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

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

阿波罗的战车 2021-03-21 13:23:32
我已经阅读了很多有关闭包的文章,我想我理解它们,但是我希望自己能为自己和其他人提供一个清晰而清晰的解释。我正在寻找一个简单的解释,可能有助于我理解在哪里以及为什么要使用它们。
查看完整描述

3 回答

?
DIEA

TA贡献1820条经验 获得超2个赞

封闭封闭

对象是带有方法的数据,闭包是带有数据的函数。

def make_counter():

    i = 0

    def counter(): # counter() is a closure

        nonlocal i

        i += 1

        return i

    return counter


c1 = make_counter()

c2 = make_counter()


print (c1(), c1(), c2(), c2())

# -> 1 2 1 2


查看完整回答
反对 回复 2021-03-22
?
湖上湖

TA贡献2003条经验 获得超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正确闭合。


查看完整回答
反对 回复 2021-03-22
  • 3 回答
  • 0 关注
  • 205 浏览
慕课专栏
更多

添加回答

举报

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