闭包作用:可以用来在一个函数与一组私有变量之间创建关联关系,在给定函数被多次调用的过程中,这些私有变量能够保持其持久性(保存运行环境与变量的状态)
闭包的特征:1.必须要有函数的嵌套,而且外层函数必须返回内层函数。外层函数相当于给内层函数提供了一个包装起来的运行环境,在这个包装的运行环境里面,内层函数可完全自己掌握自由变量的值。2.内层函数一定要用到外层函数中定义的自由变量。
=============================
func_list = []
for i in range(3):
def myfunc(a):
return i + a
func_list.append(myfunc)
for f in func_list:
print(f(1)) # 返回的是3,3,3
===========================
func_list = []
for i in range(3):
def deco(i):
def myfunc(a):
return i + a
return myfunc
func_list.append(deco(i))
for f in func_list:
print(f(1)) # 返回的是1,2,3