闭包

条件
1.一个嵌套函数
2.在嵌套函数的内部函数使用外部(非全局的变量)
查看是否是闭包函数名.closure()

# def wrapper():
#     a = 10
#     def inner():
#        print(a)
#     # print(inner.__closure__) # 不是None 就是闭包
#     inner()
# wrapper()
# def wrapper():
#     a = 10
#     def inner():
#        print(a)
#     return inner
# inner = wrapper()
# inner()


# def wrapper():
#     a = 10
#     def inner():
#        print(a)
#     return inner
# wrapper()()

闭包的意义:返回的函数对象,不仅仅是一个函数对象,在该函数外还包裹了一层作用域,

这使得,该函数无论在何处调用,优先使用自己外层包裹的作用域

应用领域:延迟计算(原来我们是传参,现在我们是包起来)

python中闭包会进行内存驻留,普通函数执行完后就销毁了
全局存放会有污染和不安全等我现象
闭包有个弊端:会出现内存泄漏.......查资料补全
装饰器的本质就是闭包

原文地址:https://www.cnblogs.com/bigcatbc/p/10538540.html