闭包

闭包:在嵌套函数内,使用非全局变量且不是本层

def func():
    a = 1
    def f1():
        def foo():
            print(a)
        return foo
    return f1
ret = func()
a = ret()
a()
简写:
func()()()
def func():
    avg_lst = []  # 自由变量
    def foo(price):
        avg_lst.append(price)
        avg = sum(avg_lst) / len(avg_lst)
        return avg
    return foo
ret = func()
print(ret(150000))
print(ret(160000))
print(ret(170000))
print(ret(180000))

验证是否是闭包 closure():

print(ret.__closure__)
print(func.__closure__)

获取自由变量 code.co_freevars:

print(ret.__code__.co_freevars)

获取局部变量 code.co_varnames:

print(ret.__code__.co_varnames)

闭包的作用:

1、保证数据的安全性(干净)

2、装饰器

posted @ 2020-10-27 09:46  Ylinn  阅读(60)  评论(0)    收藏  举报