标签:python 元素 内部函数 列表 修改 变量 函数嵌套 class 不能
举个例子,要求多个数的平均值。
nums = [50,30,20,10,77]
# sum()用来求列表中所有元素的和
print(sum(nums)/len(nums))
nums = []
# 创建一个函数计算平均值
def averager(n) :
# 将n添加到列表当中
nums.append(n)
# 求平均值
return sum(nums)/len(nums)
print(averager(10))
print(averager(30))
print(averager(50))
上面的代码,有一个问题,就是列表nums是谁都能看到和修改的。
万一被人改了,添加进入一个字符串,averager函数就报错了。
所以,要达到一个nums不能被修改的效果。
def make_averager() :
nums = []
def averager(n) :
# 将n添加到列表当中
nums.append(n)
# 求平均值
return sum(nums)/len(nums)
return averager
averager = make_averager()
print(averager(10))
print(averager(20))
print(averager(30))
print(averager(40))
总结 :
形成闭包的要点有:
1 - 要有函数嵌套
2 - 要将内部函数作为返回值返回
3 - 内部函数必须要使用到外部函数的变量
标签:python 元素 内部函数 列表 修改 变量 函数嵌套 class 不能
原文地址:https://www.cnblogs.com/gnuzsx/p/12577242.html