史上最通俗的python 闭包讲解

闭包是针对于函数的,不是类的,是在函数中提出的概念。
在一个函数里又嵌套了一个函数,这不叫闭包,把这个函数扔出来才叫闭包。
示例代码:

def func():
    a=100
    def inner_func():
        b=99
        print(a,b)

    print(locals())

    return inner_func

x=func()

print(x)

一个函数,内部包含了另一个函数,通过 return 把内部的函数扔出来。

这个外部的函数要想把内部的函数扔出来了,必须执行 return ,但是即然执行到了 return ,那这个外部的函数必须是执行完了的了,因为 return 一定 是函数的最后一条语句,或者说,执行到了 return ,函数就结束了。(插话:return 一定 是函数的最后一条语句,但不是必须是函数的最后一条语句。函数可以没有 return语句。)

如果有一个变量接收了外部的函数,那么不能只接收名字,因为只接收名字函数并没有执行这个外部函数,内部的函数当然也没有扔出来。所以必须是外部函数要带着括号,即让外部函数的执行结果给接收的变量,这个执行的结果当然就是扔出来的内部的函数。

这个接收的变量得到的外部函数扔出来的这个内部函数,是这个内部函数的肉体,所以这个变量就被内部函数附体了,相当于内部函数逃出了外部函数的控制,并且换了个名字,开始了新的生活,中国的古话叫:借尸还魂。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容