函数闭包

 

#闭包Cell:嵌套的函数,且内部函数调用外部函数的变量
def outer():
    a = 1
    def inner(): #inner是一个闭包
        print(a)
#   print(inner.__closure__)
    return inner
inn = outer() #inn变量接收outer返回的inner函数内存地址
inn()
#不使用闭包,每次调用inner需要调用outer,创建变量,回收变量
#使用闭包时,inn接收了inner函数的内存地址,因此inner函数不会被回收,inner使用的a也不会被回收。
# 因此外层函数的变量不会释放。保护了a变量,延长了a的生存周期,节省了反复创建的过程。

 

posted @ 2020-03-28 21:06  vivagoal  阅读(82)  评论(0)    收藏  举报