函数的嵌套定义
①内部函数可以使用外部函数的变量
作用域链
在内部函数使用变量时,是从小局部到大局部到全局到内置名字的过程中一级一级网上找,找到最近的一个就使用
nonlocal a 声明一个上层局部变量,往上走一级离得最近并且有a
1、对全局无效
2、对局部的最近的一层产生影响
闭包嵌套函数,内部函数调用外部函数的变量
不调用不是闭包是嵌套
def outer()
a = 1
def inner():
print(a)
outer()
闭包的应用
可以保护变量,保护上一级局部变量中a = 1 生存周期
def outer()
a= 1
def inner()
return innner
print(a)
inn = outer() #用imn接收return inner
inn() #直接调用函数,省去a重复创造并使用,节省内存空间