定义:如果在一个内部函数里,对在外部作用域的变量进行了引用,那么内部函数就被认为是闭包
闭包的效果:闭包的函数可以脱离原来的函数进行引用
闭包指延伸了作用域的函数,其中包含函数定义体中引用,但是不在定义体中定义的非全局变量,函数是不是匿名的没有关系,关键是它能访问定义体之外定义的非全局变量。
def make_averager():
series = []
def averager(new_value):
seires.append(new_value)
total = sum(series)
return total/len(series)
return averager
averager的闭包延伸到那个函数的作用域之外,包含自由变量series的绑定。
综上,闭包是一种函数,它会保留定义函数时存在的自由变量的绑定,这样调用函数时,虽然定义作用域不可用了,但是仍能使用那些绑定。