python 闭包

在说闭包之前先看下以下这几行代码:


def outer():

    a = 1

    def inner():

        print(a)

    inner()

当我在外部调用outer()这个函数时,每次调用都会声明一个a变量,执行完函数便销毁a变量,调用100次便要重复这个过程100次。

而闭包则可以避免这种情况。

def outer():

    a =1

    def inner():

        print(a)

    return inner

inn = outer()

inn()

变量a会一直存放在内存中某个地址,直到程序结束。因为inn是全局作用域中的一个变量,它一定要等到程序结束了才能被释放,所以inn使用到的a变量就必须也一直保留在内存中,后续再调用时就不用再产生a,直接去原先的地址拿出即可。从这看出,闭包起到了延长a的生命周期的作用。


闭包的条件是:嵌套函数;内部函数引用外部函数的变量。

你可能感兴趣的:(python 闭包)