1. 什么是闭包:
闭包就是一个能够在其作用域内读取来自其他函数作用域中的局部变量的函数,常见于javascript,而在Python中同样存在着闭包的现象,并得到了较好的支持。
2. 形成闭包的条件:
该函数体的整体类型为高阶函数(解释:一个函数可以作为参数传给另外一个函数,或者一个函数的返回值为另外一个函数(若返回值为该函数本身,则为递归),满足其一则为高阶函数)
通俗来说:就是定义在某一个函数内部的函数
3. 实现
下面来举一个简单的闭包(不修改变量outer_var,只做读取)例子:
def outer(): outer_var = 1 def inner(): inner_var = outer_var + 100 print('inner:\t%s' % inner_var) return inner
执行结果如下:
解释: func = outer()之后,其实相当于 func = inner, 最后的func() 相当于执行inner(), 其不同之处在于func这一函数引用指向