闭包是 一个函数 和 相关引用环境中的自由变量 组合的实体。
装饰器也是闭包,只是这个 自由变量是函数
def func(name):
def inner_func(age):
print 'name:', name, 'age:', age
return inner_func
bb = func('the5fire')
bb(26) #
bb 称之为闭包函数,
func称之为闭包生产者,
bb被func包裹,且引用了外部环境的name变量
def int_seq():
i = 0
def foo():
nonlocal i
i += 1
return i
return foo
a= foo()
a() 返回1,再次调用a()返回2,以此类推
这个a 称之为闭包函数,是一个处理逻辑函数加上外部i变量的组合实体
i的初始化值是在生产的一刻就确定的了