首页 / 知识
python闭包函数怎么用
2023-11-12 13:09: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中使用井号(‘#’)作为单行注释的符号,语法格式为:#注释内容python如何定义函数
python如何定义函数,培训,概念,代码,环境,函数,定义,语句,括号,结果,冒号,函数的概念:函数是组织好的、具有一定功能的代码片段。在Python中,定python变量怎么使用
python变量怎么使用,培训,信息,数字,变量,字母,空格,开头,关键字,意义,规则,python中的变量主要是用来存贮信息的。message="HelloPythonworpython 培训之 object是什么类型
python 培训之 object是什么类型,培训,类型,实例,顶端,对象,关系,链条,父子,数据类型,属性,在Python的世界中,object是父子关系的顶端,所有的数pythonid函数如何运行
pythonid函数如何运行,培训,地址,代码,对象,函数,内存,类型,可能会,整数,字符串,id(object)功能:返回的是对象的“身份证号”,唯一且不变,但在不python怎样启动python程序运行
python怎样启动python程序运行,代码,环境,项目,工具,培训,业务,有限,程序,源文件,功能,执行Python程序的三种方式解释器——python/python3交python函数嵌套时怎么调用
python函数嵌套时怎么调用,培训,函数,周期,变量,嵌套,作用,定义,里面,上层,也就是说,python允许创建嵌套函数。也就是说我们可以在函数里面定pythonmap函数怎么显示结果
pythonmap函数怎么显示结果,培训,代码,数字,函数,结果,序列,元素,参数,可能会,惰性,map()函数接收两个参数,一个是函数,一个是Iterable,map将传python学习python编程可以从事什么
python学习python编程可以从事什么工作岗位,工作,分析,网络,数据,数字,行政,销售,培训,资产,庞大,一、学Python编程能做的工作,编程方向:1、Webpython写代码怎么跳下一行
python写代码怎么跳下一行,培训,代码,括号,末尾,空格,字符串,也就是,对象,以上,两个,python里一行写不下,拆成多行,有两种办法:\和()两种方法在pythonstr函数怎么用
pythonstr函数怎么用,培训,函数,字符串,整数,参数,列表,示例,初始化,变量,字典,str函数是Python的内置函数,其语法格式为str(object)返回值:返python没有main函数吗
python没有main函数吗,入口,代码,培训,位置,方法,函数,文件,程序,都会,属性,相信很多初学python的人看代码的时候都会先找一下main()方法,从ma