闭包:python函数的内部的变量离开这个函数就失去了作用域而不复存在
但是嵌套函数可以!
def fn1():
x = 1
def fn2():
def fn3():
print(x)
return fn3
return fn2
a = fn1()()()
解析: x是属于fn1函数的,但是在 fn1()调用结束后 我们又加了两个括号调用到了fn3,你看他还是能输出x的值
但嵌套函数只是引用它!不能修改它,要在嵌套函数里修改x的值需要申明nonlocal x
def fn1():
x = 1
def fn2():
def fn3():
noncal x
x+=1
print(x)
return fn3
return fn2
a = fn1()()()
工厂函数:
函数return的时候返回一个函数名