python-返回函数(闭包)

版权声明:本文为博主原创文章,未经博主允许不得转载。 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

这种闭包方法在很多地方可以用到

猜你喜欢

转载自blog.csdn.net/deng1456694385/article/details/87303065