一、闭包满足的条件
闭包 = 内部函数 + 定义函数的环境
条件一 : 内部函数
条件二: 外部环境的变量
二、实战
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