Python 入门之 闭包

1、闭包

(1)在嵌套函数内使用(非本层变量)和非全局变量就是闭包

(2)使用__ closure__ 判断是不是闭包

def func():
    a = 1
    def foo():
        print(a)
    print(foo.__closure__)  # 判断是不是闭包   (<cell at 0x000002B5BF55EC18: int object at 0x00000000762E8070>,)
func()
def wrapper():
    a = 1
    def inner():
        print(a)
    return inner
ret = wrapper()

a = 2
def wrapper():
    def inner():
        print(a)
    return inner
ret = wrapper()

def wrapper(a,b):
    def inner():
        print(a)
        print(b)
    inner()
    print(inner.__closure__)
a = 1
b = 2
wrapper(11,22)

(3)闭包的作用

<1> 保存局部信息不被销毁,保护数据的安全性

<2> 在装饰器中使用

(4)闭包的应用

<1> 可以保存一些非全局变量但是不易被销毁、改变的数据。

<2>在 装饰器中

原文地址:https://www.cnblogs.com/caiyongliang/p/11445058.html