python闭包函数怎么用
python闭包函数:
闭包,又称闭包函数或者闭合函数,类似于嵌套函数,不同之处在于,闭包中外部函数返回的不是一个具体的值,而是一个函数。一般情况下,返回的函数会赋值给一个变量,这个变量可以在后面被继续执行调用。
例如,计算一个数的n次幂,用闭包可以写成下面的代码:
#闭包函数,其中exponent称为自由变量
defnth_power(exponent):
defexponent_of(base):
returnbase**exponent
returnexponent_of#返回值是exponent_of函数
square=nth_power(2)#计算一个数的平方
cube=nth_power(3)#计算一个数的立方
print(square(2))#计算2的平方
print(cube(2))#计算2的立方
运行结果为:
4
8
在上面程序中,外部函数nth_power()的返回值是函数exponent_of(),而不是一个具体的数值。
需要注意的是,在执行完square=nth_power(2)和cube=nth_power(3)后,外部函数nth_power()的参数exponent会和内部函数exponent_of一起赋值给squre和cube,这样在之后调用square(2)或者cube(2)时,程序就能顺利地输出结果,而不会报错说参数exponent没有定义。
看到这里,读者可能会问,为什么要闭包呢?上面的程序,完全可以写成下面的形式:
defnth_power_rewrite(base,exponent):
returnbase**exponent
上面程序确实可以实现相同的功能,不过使用闭包,可以让程序变得更简洁易读。设想一下,比如需要计算很多个数的平方,那么读者觉得写成下面哪一种形式更好呢?
#不使用闭包
res1=nth_power_rewrite(base1,2)
res2=nth_power_rewrite(base2,2)
res3=nth_power_rewrite(base3,2)
#使用闭包
square=nth_power(2)
res1=square(base1)
res2=square(base2)
res3=square(base3)
显然第二种方式表达更为简洁,在每次调用函数时,都可以少输入一个参数。
其次,和缩减嵌套函数的优点类似,函数开头需要做一些额外工作,当需要多次调用该函数时,如果将那些额外工作的代码放在外部函数,就可以减少多次调用导致的不必要开销,提高程序的运行效率。
以上内容为大家介绍了python闭包函数怎么用,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注IT培训机构:千锋教育。
猜你喜欢LIKE
相关推荐HOT
更多>>python文件不存在时创建文件
最近写python脚本的时候遇到个读写文件的问题,当我用withopen打开文件读文件的时候如果文件不存在就会报FileNotFoundError这个错误,并且在加...详情>>
2023-11-07 16:27:20python如何创建列表
列表是有序可变的元素集合,列表可以嵌套,即列表里面的元素可以是列表,此外列表中的元素数据类型可以不一致,列表的定义方式有三种,如下所示...详情>>
2023-11-07 15:55:59python怎么传入不确定参数
python允许在形参前面添加一个星号(*),这样就意味着该参数可接收多个参数值,多个参数值被当成元组传入。下面程序定义了一个形参个数可变的函...详情>>
2023-11-07 14:51:57python如何对数组删除元素
python中关于对列表元素的删除操作,有以下几种方式1.remove:删除单个元素,删除首个符合条件的元素,按值删除举例说明:>>>str=[1,2,3,4,5,2,6]...详情>>
2023-11-07 12:47:51