首页 / 知识
python的闭包函数是什么
2023-11-12 13:23:00
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相关知识,请关注我们
最新内容
相关内容
如何在python代码中指定保存的文件
如何在python代码中指定保存的文件格式,代码,培训,文件格式,格式,二进制文件,文件,后缀,以上,方法,更多,python指定保存文件格式的方法:1、保python如何看变量属性
python如何看变量属性,培训,属性,函数,变量,参数,对象,方法,列表,范围内,字典,1、使用dir()函数查看dir()函数不带参数时,返回当前范围内的变python代码运行需要编译吗
python代码运行需要编译吗,代码,培训,做好,体系,平台,语言,机器码,目标,厨师,下次,有人在讨论Python代码是编译执行还是解释执行?这个问题还python如何注释代码行
python如何注释代码行,代码,培训,位置,注释,信息,内容,中文,程序,声明,语法,python中使用井号(‘#’)作为单行注释的符号,语法格式为:#注释内容python如何定义函数
python如何定义函数,培训,概念,代码,环境,函数,定义,语句,括号,结果,冒号,函数的概念:函数是组织好的、具有一定功能的代码片段。在Python中,定python变量怎么使用
python变量怎么使用,培训,信息,数字,变量,字母,空格,开头,关键字,意义,规则,python中的变量主要是用来存贮信息的。message="HelloPythonworpython声明变量
python声明变量,培训,代码,变量,赋值,字符串,类型,语句,函数,上面,声明,首先,在Python解释器中输入如下内容:>>>a=5上面代码没有生成任何输出,只python类是函数吗?
python类是函数吗?,代码,数据,培训,公用,名称,函数,变量,方法,实例,圆括号,python类(Class):用来描述具有相同的属性和方法的对象的集合。它定python怎么注释多行代码
python怎么注释多行代码,培训,代码,注释,内容,开头,结尾,全部,语法,函数,模块,python多行注释确保对模块,函数,方法和行内注释使用正确的风格python 培训之 object是什么类型
python 培训之 object是什么类型,培训,类型,实例,顶端,对象,关系,链条,父子,数据类型,属性,在Python的世界中,object是父子关系的顶端,所有的数pythonid函数如何运行
pythonid函数如何运行,培训,地址,代码,对象,函数,内存,类型,可能会,整数,字符串,id(object)功能:返回的是对象的“身份证号”,唯一且不变,但在不python怎样启动python程序运行
python怎样启动python程序运行,代码,环境,项目,工具,培训,业务,有限,程序,源文件,功能,执行Python程序的三种方式解释器——python/python3交