闭包
作用域的关系,是在定义阶段确立的。
在调用阶段,不管函数返回到那个位置,到函数最原始定义的时候去找名。
闭包:内部函数包含对外部作用域,而不是全局作用域的名字的调用
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,并且附加这个函数的作用域,也跟着出来

浙公网安备 33010602011771号