python闭包

在函数内部在定义一个函数,并且这个函数用到了外面函数的变量,那么这个函数以及用到的变量称之为闭包

def test(number):
        print("----1----")
        def test_in(number_in):
                print("----2----")
                print(number + number_in)
        print("----3----")
        return test_in

ret = test(100)
print(ret)
ret(100)

运行结果

----1----
----3----
<function test.<locals>.test_in at 0x28
----2----
200

必需条件

  • 必须存在函数嵌套
  • 内部函数必须引用外部函数的变量
  • 内部函数必须不能引用全局变量
  • 外部函数的返回值必须是内部函数的函数名

变量内存的释放

通常情况下,当一个函数运行结束,函数内部的所有东西都会释放掉,还给内存,函数的局部变量也会因此消失。然而,闭包是一种特殊情况,如果外部函数在结束时发现其变量会在内部函数中被使用,就会把这个变量绑定给内部函数,然后再结束自己的运行
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 闭包 ⑴ 定义 函数中嵌套了一个函数。最外层的函数我们称为“外部函数”,嵌套在内的函数我们称为“内部函数”。内部函...
    卷卷_麦芽呀阅读 340评论 0 0
  • 我在博客中曾经介绍过两篇关于函数的文章,第一篇是 关于 Python 函数是第一类对象,第二篇是关于 Lambda...
    liuzhijun阅读 1,541评论 2 27
  • 作用域 在理解闭包前,先看一个函数: 可以看到func()函数内部的变量无法在函数外部使用 全局变量out_fun...
    XYZeroing阅读 948评论 0 10
  • 在计算机科学中,闭包(英语:Closure),又称词法闭包(Lexical Closure)或函数闭包(funct...
    敲代码的密斯想阅读 1,024评论 2 2
  • 最好看到一个老外的文章,还不错。 每天的事情都有follow 的精神。有一定的分享意义
    huishun阅读 123评论 0 0