什么是闭包?
按我学到的理解就是 函数和其外部环境变量(函数定义时候)的组合
def f1():
a = 10
def f2():
a=20
return a
在上面例子里 函数f2() 和 它的外部环境变量a=10 组合成了一个闭包
但是a=20 则是作为函数的内部变量存在的, 而且会被先于 环境变量a=10引用,导致闭包的环境变量值为None,
所以要理解环境变量还要加上‘外部’这个关键的前提条件,在函数f2()之外的a=10才能和f2()组成一个闭包
或者可以在f2()中用 nonlocal a,来表明这个a 不是内部变量,而是外部环境变量