閉包是 一個函數(shù) 和 相關(guān)引用環(huán)境中的自由變量 組合的實體。
裝飾器也是閉包,只是這個 自由變量是函數(shù)
def func(name):
def inner_func(age):
print 'name:', name, 'age:', age
return inner_func
bb = func('the5fire')
bb(26) #
bb 稱之為閉包函數(shù),
func稱之為閉包生產(chǎn)者,
bb被func包裹,且引用了外部環(huán)境的name變量
def int_seq():
i = 0
def foo():
nonlocal i
i += 1
return i
return foo
a= foo()
a() 返回1,再次調(diào)用a()返回2,以此類推
這個a 稱之為閉包函數(shù),是一個處理邏輯函數(shù)加上外部i變量的組合實體
i的初始化值是在生產(chǎn)的一刻就確定的了