Python 闭包

"""
闭包定义:
    1. 闭包是嵌套在函数中的函数。
    2. 闭包必须是内层函数对外层函数的变量(非全局变量)的引用或者改变
    (对不可变数据类型进行改变需要用关键字nonlocal在内层函数声明一下,可变的数据类型则不用nonlocal声明,直接修改)。
    
闭包的特性:
	闭包函数的空间不会随着函数的结束而消失;
	被引用或者改变的变量不会消失

闭包的作用:
    保存局部信息不被销毁,保证数据的安全性。
闭包的应用:
    1、可以保存一些非全局变量但是不易被销毁、改变的数据。
    2、装饰器的本质。
"""


def averageWrapper():

    # 闭包函数的空间不会随着函数的结束而消失;被引用或者改变的变量不会消失
    l = []
    def averageInner(nums:int):
        l.append(nums)
        total = sum(l)
        return total / len(l)

    return averageInner


ret = averageWrapper()
print(ret(10))  # 10.0
print(ret(20))  # 15.0
print(ret(30))  # 20.0
print(ret(40))  # 25.0

# 判断一个函数是不是闭包:闭包函数是否有自由变量
print(ret.__code__.co_freevars)  # ('l',)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值