Python中的闭包

个人理解:Python中的闭包是指在一个函数里定义另一个函数,所以闭包最起码是两个函数,外层函数将内层函数包裹起来,内层函数调用外层函数的变量,然后外层函数将内层函数返回的情况。

闭包有一个最大的特性就是可以减少函数的参数个数和代码的复用。

例如:原来一个计算长方体的体积的函数是需要传入长宽高就要这样定义

def volume(x,y,z):
    return x*y*z

但是如果其中有一个或者几个参数是确定的,就可以用闭包来实现代码的复用,下面是两个参数确定的情况:

def volume_conf(x,y):
    def volume(z):
        return x*y*z
    return volume
cuboid1=volume_conf(1,2)
cuboid2=volume_conf(2,3)
print cuboid1(1)
print cuboid2(2)

假设两个确定的参数是长宽,通过闭包我们就可计算固定长宽但是高不确定的长方体的体积。

只要改变x,y我们又可以构造新的长宽固定的,高不确定的长方体。

类似这样一部分参数确定,一部分参数不确定的问题,闭包是个很好的解决方法。

但是闭包也有缺点:占用内存,过多的使用闭包会产生内存泄露。

因为外层函数的变量是随着内存函数的存在而存在的,所以这些变量会占用一定的内存空间。


PS:个人学习记录,仅供参考,如有错误请留言


猜你喜欢

转载自blog.csdn.net/u011648373/article/details/80072650