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