闭包

作用域的关系,是在定义阶段确立的。

在调用阶段,不管函数返回到那个位置,到函数最原始定义的时候去找名。

 

闭包:内部函数包含对外部作用域,而不是全局作用域的名字的调用

1,必须是内部定义的函数的代码,

2,包含对外部作用域的引用,

3,但不是对全局作用域的引用。

x=1
def = f1():
        x=2
        def f2()
              print(x)
        return f2

f=f1()
f()

  

闭包函数:一定是对外部作用域的引用

x=1
def f1():
     x=2
     y=1
     def f2():
          print(x)
          y
      return f2

f=f1()
f()
print(f.__closure__[0].cell_contents)
print(f.__closure__[1].cell_contents)

返回这个函数f2,并且附加这个函数的作用域,也跟着出来

 

posted @ 2018-01-14 19:17  老王的农场  阅读(133)  评论(0编辑  收藏  举报