Python闭包

作者: 卷卷_麦芽呀 | 来源:发表于2018-03-22 10:36 被阅读1次

闭包

⑴ 定义

函数中嵌套了一个函数。最外层的函数我们称为“外部函数”,嵌套在内的函数我们称为“内部函数”。内部函数中引用了外部函数的变量,但不能引用全局变量,且外部函数的返回值为内部函数的函数名。此时,便构成了一个闭包。

(如果在一个函数的内部定义了另一个函数,外部的我们叫他外函数,内部的我们叫他内函数。

闭包:

在一个外函数中定义了一个内函数,内函数里运用了外函数的临时变量,并且外函数的返回值是内函数的引用。这样就构成了一个闭包)

简言之,当函数满足以下结构时,我们可以将其视为闭包。

def outer_function():
    """
    外部函数
    """
    outer_var = value   # 定义变量 outer_var,value可以是任何值

    def inner_function():
        """
        内部函数
        """
        print('引用变量:', outer_var)   # 引用外部函数的变量

    return inner_function   # 外部函数的返回值为内部函数名

⑵ 必需条件

  • 必须存在函数嵌套。

  • 内部函数必须引用外部函数的变量。

  • 内部函数必须不能引用全局变量。

  • 外部函数的返回值必须是内部函数的函数名。

⑶ 变量内存的释放

通常情况下,当一个函数运行结束,函数内部的所有东西都会释放掉,还给内存,函数的局部变量也会因此消失。然而,闭包是一种特殊情况,如果外部函数在结束时发现其变量会在内部函数中被使用,就会把这个变量绑定给内部函数,然后再结束自己的运行。

⑷ 简单闭包的举例

简单闭包的举例

⑸ 闭包的特有属性

只要是闭包,都有 __closure__ 属性。该属性返回闭包应用外围作用域(即外部函数中)的变量内存地址,结果是一个元组。语法为:外部函数().__closure__

如果函数不是闭包,则 __closure__ 返回“None”。

可以通过打印 外部函数().__closure__[数字].cell_contents 来获取外部函数变量的值。其中,“数字”即为元组元素的索引,从0开始。

例如:

闭包的特有属性

相关文章

  • python闭包学习

    参考文章 python闭包python闭包一步一步教你认识Python闭包深入浅出python闭包

  • python函数之闭包

    目录 python函数之闭包什么是闭包python中的namespace闭包的条件闭包的优点 python函数之闭...

  • Python 闭包使用注意点

    1 Python 闭包 今天,聊下 python 的闭包。在函数编程中经常用到闭包。 闭包是什么,它是怎么产生的及...

  • python高级之闭包

    python高级之闭包 什么是闭包? 闭包(closure)是函数式编程的重要的语法结构。闭包也是一种组织代码的结...

  • Python 中的闭包

    Python 中的闭包:+ http://python.jobbole.com/82296/

  • python之理解闭包和装饰器

    python之理解闭包和装饰器 1、闭包函数 1.1 python中函数都是对象 结果: 上面定义一个shut函数...

  • 闭包

    浅谈 python 的闭包思想 首先 python的闭包使用方法是:在方法A内添加方法B,然后return 方法B...

  • 2018-11-20

    python函数的闭包 闭包: 嵌套函数调用外部函数的变量 注意: 闭包必须是内部函数调用外部函数定义的变量,这其...

  • Python 入门之 闭包

    Python 入门之 闭包 1、闭包 (1)在嵌套函数内使用(非本层变量)和非全局变量就是闭包 (2)_ clos...

  • Python装饰器(Decorator)完全指南-基础篇

    Decorator基本指南 前提知识 Python中的闭包(closure) 所谓闭包,指的是附带数据的函数对象。...

网友评论

    本文标题:Python闭包

    本文链接:https://www.haomeiwen.com/subject/dkooqftx.html