python 函数的闭包概念

闭包的概念有点烧脑,以代码为例。

#闭包函数的实例
# outer是外部函数 a和b都是外函数的临时变量
def outer( a ):
  b = 10
# inner是内函数
  def inner():
#在内函数中 用到了外函数的临时变量
    print(a+b)
# 外函数的返回值是内函数的引用
  return inner

if __name__ == '__main__':
# 在这里我们调用外函数传入参数5
#此时外函数两个临时变量 a是5 b是10 ,并创建了内函数,然后把内函数的引用返回存给了demo
# 外函数结束的时候发现内部函数将会用到自己的临时变量,这两个临时变量就不会释放,会绑定给这个内部函数
  demo = outer(5)
# 我们调用内部函数,看一看内部函数是不是能使用外部函数的临时变量
# demo存了外函数的返回值,也就是inner函数的引用,这里相当于执行inner函数
  demo() # 15

  demo2 = outer(7)
  demo2()#17

使用闭包的过程中,一旦外函数被调用一次返回了内函数的引用,虽然每次调用内函数,是开启一个函数执行过后消亡,但是闭包变量实际上只有一份,每次开启内函数都在使用同一份闭包变量

posted on 2018-07-10 14:09  huangsheng2  阅读(116)  评论(0编辑  收藏  举报