今天更新一下我所知道的闭包的概念
闭包:
可以理解为内层函数对外层函数的变量进行使用,然后内成函数就可以被称为闭包函数
闭包的好处:
1:可以让一个变量常驻于内存
2:可以避免全局变量被修改
现在对这个两个特点进行分别推理
def func():
a=10
def inner():
print(a)
return a
return inner
#这时候我们进行函数的调用
ret=func()
#这时候的func()函数的返回值就是一个inner函数,想要使用的话就ret()
#后面我们写代码的时候需要用的这个a可能随时调用到这个函数,所以我们就要保证这个a能常驻于内存,使用闭包的话我们就可以随时使用的到这个a,想要使用的时候就ret()
这样子的话,闭包的第一个特点就出来了(第一个特点:可以让一个变量常驻于内存)
def func():
a = 10
def inner():
nonlocal a# nonlocal的作用:在局部, 引入外层的局部变量
a += 1
return a
return inner
ret=func()
#这样我们相当于一个计数器,每次执行完一次ret(),a的值就会发生改变,就相当于我们现在可以在外面对内层
#变量使用,但是我们无法直接修改,想要修改的话还是需要对内存函数进行修改才能修改到a的值,这样我们可
#以避免一种情况,当我们变量a作为全局变量时
#例如
a=10
#下面只要对a进行重新赋值的话,a的值就改变了
a=50
print(a)
这样当我们想要避免全局变量被修改的话,把他封装成闭包函数的话,外面的就无法对我们所封装的全局变量进行修改了。(第二个特点:可以避免全局变量被修改)
这就是我所理解的闭包,希望对各位小白有所帮助,仅作参考,具体的还是需要看官网文档的哦