分享

5分钟掌握Python闭包

 流形sbz 2023-10-26 发布于甘肃
5分钟掌握Python闭包

Python闭包是一种特殊的函数结构,它可以让一个内部函数访问和修改外部函数的局部变量,即使外部函数已经结束。闭包有以下几个特点:

  • 闭包必须有一个内部函数和一个外部函数,内部函数必须引用外部函数的一个或多个局部变量。
  • 外部函数的返回值必须是内部函数的引用,这样才能形成一个闭包。
  • 闭包可以保持外部函数的局部变量在内存中不被释放,也可以实现类似于面向对象编程的封装和私有化的功能。
  • 闭包可以用来实现一些高阶函数,如装饰器、偏函数、生成器等。

下面闭包的例子定义了一个外部函数add,它接受一个参数x,并定义了一个内部函数addx,它接受一个参数y,并返回x+y。外部函数的返回值是内部函数的引用。这样,每次调用add时,都会创建一个新的闭包,它记住了传入的x值,并可以在后续调用addx时使用。

# 闭包的例子def add(x): def addx(y): return x + y return addx# 创建两个不同的闭包add5 = add(5) # x = 5add10 = add(10) # x = 10# 调用闭包print(add5(3)) # 输出 8print(add10(3)) # 输出 13

如果想要修改闭包中的外部变量,可以使用nonlocal关键字来声明。这样就可以在内部函数中改变外部变量的值。例如:

# 修改闭包变量的例子def counter():    count = 0 # 外部变量    def inc():        nonlocal count # 声明非局部变量        count += 1 # 修改外部变量        return count    return inc# 创建一个闭包c = counter()# 调用闭包print(c()) # 输出 1print(c()) # 输出 2print(c()) # 输出 3

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多