13-python--bibao

# 封闭,保证数据安全# 方案一:数据不安全# l1 = []# def make_averger(new_value):#     l1.append(new_value)#     total = sum(l1)#     return total / len(l1)# print(make_averger(10000))# print(make_averger(20000))# 方案二:数据安全,l1不能是全局变量# 每次执行的时候l1列表都会重新赋值成空列表# def make_averger(new_value):#     l1 = []#     l1.append(new_value)#     total = sum(l1)#     return total / len(l1)# print(make_averger(10000))# print(make_averger(20000))# 方案二:数据安全,l1不能是全局变量# 闭包只能存在嵌套的函数中# 内层函数对外层函数非全局变量的引用(使用),就会形成闭包。# 被引用的非全局变量也称为自由变量,这个自由变量会与内层函数产生一个绑定关系,# 自由变量不会在内存中消失。# 闭包的作用:保证数据安全# def make_averger():#     l1 = []#     def averger(new_value):#         l1.append(new_value)#         total = sum(l1)#         return total / len(l1)#     return averger# avg = make_averger()# print(avg(10000))# print(avg(20000))# 如何判断一个嵌套函数是不是闭包#     def inner():#         print(a)#         print(b)#     return inner# a = 2# b = 3# ret = wrapper(a,b)# print(ret.__code__.co_freevars)  # (‘a‘, ‘b‘)

相关推荐