python-4 闭包
函数的闭包
定义:闭包就是内层函数对外层函数非全局变量的引用 !!!!!!
特点:
1. 被引用的非全局变量也被称作是自由变量,它会与内层函数产生一个绑定关系,不会在内存中消失
2. 函数外部无法调用自由变量,故而 起到 保护数据安全 的作用
3. 闭包只能存在于嵌套函数中
举例:方案一:全局变量 l1,缺点数据不安全
l1 = []
def make_average(new_value):
l1.append(new_value)
total = sum(l1)
average = total / len(l1)
return average
# 举例:遍历字典,格式化输出,函数调动
data = {1: 10, 2: 20, 3: 30}
for i in data:
print("第%d天的平均收盘价为%s" % (i, make_average(data[i])))
方案二:闭包
def make_average():
l1 = [] # 自由变量,一直在内存中不会消失,直到 不调用内层函数为止,内层函数使用它这个非全局变量
def avenger(new_value):
l1.append(new_value)
total = sum(l1)
return total / len(l1)
return avenger # 返回内层函数名,即调用内层函数
#判断是否为闭包的方法:定义一个外层函数的引用,利用内置函数查看,用代码判断是否为函数闭包
a1 = make_average()
print(a1.__code__.co_freevars) #输出一个函数的自由变量,以此来判断是否为闭包
珊瑚海

浙公网安备 33010602011771号