"""
闭包定义:
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',)
Python 闭包
最新推荐文章于 2024-07-27 12:20:46 发布