闭包就是定义一个函数,在这个函数里面再定义一个函数,并且这个函数用到了外面的函数的变量,将这个函数和使用的变量称之为闭包
如果需要修改外层函数已经赋值的变量需要使用nonlocal
def con(start=0):
def demo1():
nonlocal start
start += 1
return start
return demo
python 使用LEGB的顺序来查找对象的
locals:当前所在的空间,(函数、模块)
enclosing:外部嵌套函数的变量(闭包)
globals: 全局变量
builtins: 内建模块命名空间