闭包可以用来在一个函数与一组“私有”变量之间创建关联关系。在给定函数被多次调用的过程中,这些私有变量能够保持其持久性。变量的作用域仅限于包含它们的函数,因此无法从其它程序代码部分进行访问。 不过,变量的生存期是可以很长,在一次函数调用期间所创建所生成的值在下次函数调用时仍然存在。正因为这一特点,闭包可以用来完成信息隐藏,并进而应用于需要状态表达的某些编程范型中。 我们来看下在python中是如何使用闭包的把:
def
make_averager():
series
= []
def
averager(new_value
):
series
.append(new_value
)
total
= sum(series
)
return total
/len(series
)
return averager
avg
= make_averager()
print(avg(10))
print(avg(11))
print(avg(12))
可以看到,我们使用函数中的series 来存储输入的数据,从而实现了闭包的信息隐藏。 输入如下:
10.0
10.5
11.0
最后实现了统计输入所有参数的平均数的一个函数。