ad

《Python3快速入门与实战》_系统全面带领你学会Python_4.5 递归函数 匿名函数

admin 133 2023-10-19

【摘要】 本书摘自《Python3快速入门与实战》一书中第4章,第5.6节,由肖冠宇、杨捷等编著。

4.5 递归函数

《Python3快速入门与实战》_系统全面带领你学会Python_4.5  递归函数 匿名函数

一个函数在其函数体内调用函数自身,这样的函数就是递归函数。递归函数原理是使用 一个函数通过不断地调用函数自身来实现循环处理数据,直到处理到最后一步,再将每一步 的计算结果向上一步逐级返回。

注意:在使用递归的过程中一定要有结束递归的判断,否则递归会无限制地执行下去, 造成死循环,直到程序报错。

例4- 12 使用递归函数计算3的阶乘(源代码位置: chapter04/4.5递归函数.py)。 案例代码如下:

def factorial func(num)

if num>1:

retumn num* factorial func(num- 1)

else:

#结束递归的判断,当num=1 时,已经递归到了最后一步,直接返回1

return num

#计算3的阶乘

print(factorial func(3))

运行结果如下:

6

在数学中阶乘的实现步骤:

1!=1

2!=2*1

3!=3*2*1

4!=4*3*2*1

··

n!=n*(n- 1)* … *1

使用递归函数计算3的阶乘程序执行步骤:

第1步:3* factorial func(3-1)等价于3* factorial func(2), 此时等待 factorial func(2)的 返回值。

第2步:2*factorial func(2-1)等价于2* factorial func(1), 此时等待 factorial func(1)的 返回值。

第 3 步 :factorial func(1)在函数内通过执行 if条件判断,进入到 else 代码块,已经是 最后一步,直接将1返回到第2步。第2步得到了factorial func(1) 的返回值,执行该步后 续代码,将计算结果返回到第1步。第1步得到 factorial func(2) 的返回值,执行该步后续 代码,第1 步已经没有再向上返回的步骤,程序结束,将3的阶乘最终结果返回给调用 factorial func(3)的地方。

4.6 匿名函数

在前面章节中已经介绍了函数的定义和使用,之前在定义函数时都要给函数起个名字, 那么是不是函数都必须要有名字呢?答案是否定的。在 Python 中有一种没有名字的函数, 叫做匿名函数。匿名函数定义不需要使用 def 关键字,也不需要设置函数名称,在函数定义 时使用lambda 关键字声明即可。

匿名函数语法格式: lambda 参数列表:表达式

匿名函数中参数列表的参数数量没有个数限制,多个参数之间用逗号隔开。需要特别注 意的是匿名函数会将表达式的计算结果自动返回,不需要使用return关键字。

匿名函数的用法:可以把匿名函数赋值给一个变量,也可以把匿名函数作为参数传入其 他函数中。

1. 将匿名函数赋值给变量,通过变量名调用匿名函数

例4- 13 计算两个数字的和(源代码位置: chapter04/4.6匿名函数.py)。 案例代码如下:

#把匿名函数赋值给一个变量

sum =lambda x,y:x+y

#通过变量名称调用匿名函数

print(sum(10,20))

运行结果如下:

30

解析:将计算两个变量和的匿名函数赋值给一个变量,通过变量调用匿名函数,使用非 常灵活方便。

2. 匿名函数作为普通函数的参数

例4- 14 根据不同的匿名函数对两个数字进行求值计算(源代码位置: chapter04/4.6 匿 名函数.py)。

案例代码如下:

def x y compute(x,y,func):#func 是匿名函数

print("x={}".format(x))

print("y={}".format(y))

result = func(x,y)#对x 和y 两个参数使用 func匿名函数进行计算

print("result={".format(result))

#传入的匿名函数用于求两个数的和

x y compute(3,5,lambda x,y:x+y)

#传入的匿名函数用于求两个数的乘积

x y compute(3,5,lambda x,y:x*y)

运行结果如下:

x=3

y=5

result=8

x=3

y=5

result=15

解析:定义函数 x y compute 时,在函数内并没有定义计算逻辑,而是在函数参数中设 置匿名函数作为参数,在函数体内采用匿名函数的计算逻辑。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们 18664393530@aliyun.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:《Excel达人手册:从表格设计到数据可视化》_快速成为表格大师_6.1 表格自身要管理
下一篇:《Excel财务日常数据与实例讲解》_从理论到实践的一大步_1.1.7 使用SUMIF 函数或 SUMIFS 函数获取数据
相关文章

 发表评论

暂时没有评论,来抢沙发吧~

×