>[success] # 闭包 ~~~ 1.内部函数可以看作一个闭包。闭包是一个可以由另一个函数动态生成的函 数,并且可以改 变和存储函数外创建的变量的值。 2.常驻内存 防止其他程序改变这个变量 3.在内层函数中调用了外层函数的变量,叫闭包, 可以让一个局部变量常驻内存 4.就是说 外层函数被创建一次,内层函数被多次调用,所以外层函数保存的 变量不会改变,内层每次创建会根据外层最新值改变 5.闭包的作⽤用就是让⼀一个变量量能够常驻内存. 供后⾯面的程序使⽤用. ~~~ >[danger] ##### 使用闭包 ~~~ 1.当函数使用全局变量时,不能保证该全局变量没被其他函数调用,因此可以 使用闭包。 ~~~ * 不使用闭包出现的意外情况(全局变量被改变) ~~~ name = "wss" # 变量写在全局是不安全的 def abc(): global name name ="呵呵" abc() ~~~ * 使用闭包 ~~~ def func(): name = "wang" # 常驻内存 防止其他程序改变这个变量 def inner(): print(name) # 在内层函数中调用了外层函数的变量,叫闭包, 可以让一个局部变量常驻内存 print(inner.__closure__) # 查看inner是否是闭包, 如果有东西就是闭包, 没东西就不是闭包 return inner ret = func() ret() # 执行的是inner() ~~~