形成闭包的条件
- 函数嵌套
- 将内部函数作为返回值返回
- 内部函数必须要使用到外部函数的变量
# 求多个数的平均值,每次调用添加一个数
def make_averager():
# 创建一个列表,用来保存数值
nums = []
# 创建一个函数,用来计算平均值
def averager(n) :
# 将 n 添加到列表中
nums.append(n)
print('nums =',nums)
# 求平均值
return sum(nums)/len(nums)
return averager
averager = make_averager()
averager2 = make_averager()
print(averager(10))
print(averager(10))
print(averager(30))
print(averager(30))
print(averager2(10))
# 执行结果:
nums = [10]
10.0
nums = [10, 10]
10.0
nums = [10, 10, 30]
16.666666666666668
nums = [10, 10, 30, 30]
20.0
nums = [10]
10.0