版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/deng1456694385/article/details/87303065
python-返回函数(闭包)
返回函数就是返回一个函数,和js中一样,返回函数也有闭包效果,如果学过js肯定知道闭包是干嘛用的,返回函数同时也是延缓执行的一种方式
先看代码
def f():
L = []
for i in range(0, 5):
L.apeend(i)
return L
>>> f()
[4,4,4,4,4]
因为循环中引用i变量,没有立即执行append
,而最后i变成了5,所以我们可以利用闭包实现,所谓闭包就是内部函数引用了外部函数的变量,这些传入的变量会暂存在返回的函数中不会变化,这就是闭包。
闭包返回函数要注意的是不要使用循环中的变量,所以一般需要用另一个函数嵌套并该函数同外部环境一起执行,将参数传进来
def count():
def f(j):
def g():
return j
return g
fs = []
for i in range(1, 5):
fs.append(f(i)) # f(i)立刻被执行,因此i的当前值被传入f()
return fs
>> f1, f2, f3,f4, f5 = count() #这种赋值方法类似与js的解构,可以直接向值取出
>>> f1()
0
>>> f2()
1
>>> f3()
2
>>> f4()
3
>>> f5()
4
这种闭包方法在很多地方可以用到