python 闭包

1 概念

闭包是在函数内嵌时提出的一个概念。

案例
def exFun():
x = 1
def inFun():
y = 1
return x + y
return inFun

inF1 = exFun()
inV1 = inF1()
print(inV1)

输出:
2

函数内嵌: inFun()定义在exFun()内部
闭包: 函数inFun()运行时需要inFun函数的实现+外部函数exFun中的变量x,
创建函数inF1 = exFun(),将会把定义时涉及到的引用环境和函数体打包成一个整体(闭包)返回,在执行inF1()函数时将会由于在其作用域内找不到x变量而出 错。

2 用法:注意事项

1 外部变量只能被引用,不能被修改

2 案例
flist = []
for i in range(3):
def foo(x): print(x + i)
flist.append(foo)

for f in flist:
f(2)
输出:
4
4
4
因就在于返回的函数引用了变量i,但它并非立刻执行。等到3个函数都返回时,它们所引用的变量i已经变成了2,因此最终结果为4。

3 应用场景

1 装饰函数

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章