閉包是 一個(gè)函數(shù) 和 相關(guān)引用環(huán)境中的自由變量 組合的實(shí)體垂蜗。
裝飾器也是閉包楷扬,只是這個(gè) 自由變量是函數(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廊鸥,以此類推
這個(gè)a 稱之為閉包函數(shù)辖所,是一個(gè)處理邏輯函數(shù)加上外部i變量的組合實(shí)體
i的初始化值是在生產(chǎn)的一刻就確定的了