python闭包

函数闭包

闭包作用,保证数据安全
内层函数对外层函数非全局变量的引用就会形成闭包
被引用的非全局变量也称自由变量,这个自由变量会与内层函数产生一个绑定关系
自由变量不会在内存中消失

实例代码

li = []    #该列表是全局变量:可以在文件当中任何位置和函数中修改里面的值,数据不安全
def average(value):
	li.append(value)
	return sum(li) / len(li)
print(average(6000))
print(average(7000))
print(average(8000))

#output 6000
#output 6500
#output 7000
#将列表放在函数里面,在其他函数中或者文件其他位置不能对列表进行修改
#单纯将列表放进函数中,当函数执行完后列表(局部变量)被释放,数据也就没有了
#通过使用闭包进行数据保存
def average():
	li = []    #  自由变量
	def inner(value):  # 内存函数
		li.append(value)
		return sum(li) / len(li)
	return inner
#调用函数时带括号(参数或者无参数),表示调用的是函数的执行结果,必须等该函数执行完成的结果
#不带括号时,调用的是这个函数本身,是整个函数体,是一个函数对象,不须等函数执行完成
#理解:带括号表示初始化该函数,不带括号表示将该函数传递给其他变量
avg = average()
print(avg(6000))
print(avg(7000))
print(avg(8000))

#output 6000
#output 6500
#output 7000

素材来源
[1]: https://www.bilibili.com/video/BV1it4y127co

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值