【python】闭包

一、闭包满足的条件

闭包 = 内部函数 + 定义函数的环境
条件一 : 内部函数
条件二: 外部环境的变量

 

二、实战

def outer():
    x = 10
    y = 20 
    def inner():
        print(x + y)
    return inner 

 

看到这段代码,我们看到了,函数里嵌套了函数,那么是什么意思呢?

首先了解闭包前,我们先了解作用域

什么是作用域?

以上面代码为例子,x,y有效的地方就是在outer这个函数内,在其他函数,或者全局里我们不能使用它。

什么是闭包?

当我们调用outer内部的innter函数的时候,已经有两个值x,y,已经在全局的作用域下,已经分别指向10,20 所以我们得到的值就是 30

闭包在被返回时,它的所有变量就已经固定,形成了一个封闭的对象,这个对象包含了其引用的所有外部、内部变量和表达式。

 

代码:https://github.com/wangxiao9/python/tree/master/closure

 

posted @ 2019-03-06 15:57  WANG-X  阅读(132)  评论(0编辑  收藏  举报