Python 闭包 自由变量

理解:封闭的东西:保证数据的安全

#平均收盘价 方案一		数据是不安全的
l1 = []
def make_average(new_value):
    l1.append(new_value)
    total = sum(l1)
    average = total / len(l1)
    return average	
*************************************************************
#方案二:闭包
def make_average():
    l1 = []	#自由变量
    def aver(new_value):		#闭包
        l1.append(new_value)
        total = sum(l1)
        average = total / len(l1)
        return average
    return aver
avg = make_average()
avg(100000)
avg(110000)

闭包定义

1.闭包只能存在嵌套的函数中

2.内层函数 对外层函数 非全局变量的引用 (使用),就会形成闭包 。

被引用的非全局变量 也称为 自由变量 ,这个自由变量 会与内层函数产生一个绑定关系,

也就是 自由变量不会在内存中消失 。

闭包的作用: 保证数据的安全

如何判断一个嵌套函数 是不是闭包:

def make_average():
    l1 = []	#自由变量
    def aver(new_value):		#闭包
        l1.append(new_value)
        total = sum(l1)
        average = total / len(l1)
        return average
    return aver
avg = make_average()
#__code__.co_freevars 查看函数中自由变量的方法 如果有自由变量 即为闭包
avg.__code__.co_freevars #  查看函数的自由变量(l1,)

猜你喜欢

转载自www.cnblogs.com/pandaa/p/12053291.html