递归函数和匿名函数的使用介绍 | 手把手教你入门Python之四十四

上一篇:详解函数返回值和参数 | 手把手教你入门Python之四十三
下一篇:详解高阶函数和闭包 | 手把手教你入门Python之四十五

本文来自于千锋教育在阿里云开发者社区学习中心上线课程《Python入门2020最新大课》,主讲人姜伟。

递归函数

<1>什么是递归函数

通过前⾯的学习知道⼀个函数可以调⽤其他函数。
如果⼀个函数在内部不调⽤其它的函数,⽽是⾃⼰本身的话,这个函数就是递归函数。

<2>递归函数的作⽤

举个例⼦,我们来计算阶乘 n! = 1 2 3 ... n
解决办法1:使⽤循环来完成

def cal(num):
 result,i = 1,1
 while i <= num:
 result *= i
 i+= 1
 return result
print(cal(3))

看阶乘的规律

1! = 1
2! = 2 × 1 = 2 × 1!
3! = 3 × 2 × 1 = 3 × 2!
4! = 4 × 3 × 2 × 1 = 4 × 3!
...
n! = n × (n-1)!

解决办法2:使⽤递归来实现

def factorial(num):
 result = 1
 if num == 1:
 return 1
 result = num * factorial(num -1)
 return result
print(cal(3))

原理

递归函数和匿名函数的使用介绍 | 手把手教你入门Python之四十四

练习

使⽤递归实现斐波那契数列。1、1、2、3、5、8、13、21、34、……

递归函数和匿名函数的使用介绍 | 手把手教你入门Python之四十四

递归函数和匿名函数的使用介绍 | 手把手教你入门Python之四十四

递归函数和匿名函数的使用介绍 | 手把手教你入门Python之四十四

递归的练习

递归函数和匿名函数的使用介绍 | 手把手教你入门Python之四十四
递归函数和匿名函数的使用介绍 | 手把手教你入门Python之四十四

递归函数和匿名函数的使用介绍 | 手把手教你入门Python之四十四

匿名函数

⽤lambda关键词能创建⼩型匿名函数。这种函数得名于省略了⽤def声明函数的标准步骤。
lambda函数的语法只包含⼀个语句,如下:

lambda 参数列表: 运算表达式

如下实例:

sum = lambda arg1, arg2: arg1 + arg2
# 调⽤sum函数
print("Value of total : %d" % sum( 10, 20 ))
print("Value of total : %d" % sum( 20, 20 ))

以上实例输出结果:

Value of total : 30
Value of total : 40

Lambda函数能接收任何数量的参数但只能返回⼀个表达式的值
匿名函数可以执⾏任意表达式(甚⾄print函数),但是⼀般认为表达式应该有⼀个计算结果供返回使⽤。
python在编写⼀些执⾏脚本的时候可以使⽤lambda,这样可以接受定义函数的过程,⽐如写⼀个简单的脚本管理服务器。

递归函数和匿名函数的使用介绍 | 手把手教你入门Python之四十四
递归函数和匿名函数的使用介绍 | 手把手教你入门Python之四十四

自定义一个匿名函数的使用场景

递归函数和匿名函数的使用介绍 | 手把手教你入门Python之四十四
递归函数和匿名函数的使用介绍 | 手把手教你入门Python之四十四

应用场合

函数作为参数传递

>>> def fun(a, b, opt):
... print("a = " % a)
... print("b = " % b)
... print("result =" % opt(a, b))
...
>>> add = lambda x,y:x+y
>>> fun(1, 2, add) # 把 add 作为实参传递
a = 1
b = 2
result = 3

练习:
有⼀个列表

students = [
 {'name': 'zhangsan', 'age': 18, 'score': 92},
 {'name': 'lisi', 'age': 20, 'score': 90},
 {'name': 'wangwu', 'age': 19, 'score': 95},
 {'name': 'jerry', 'age': 21, 'score': 98},
 {'name': 'chris', 'age': 17, 'score': 100},
]

要求,对上述列表⾥的数据按照score进⾏升序排序。

Sort方法的使用

递归函数和匿名函数的使用介绍 | 手把手教你入门Python之四十四

递归函数和匿名函数的使用介绍 | 手把手教你入门Python之四十四
递归函数和匿名函数的使用介绍 | 手把手教你入门Python之四十四

Python中使⽤函数作为参数的内置函数和类:

递归函数和匿名函数的使用介绍 | 手把手教你入门Python之四十四

Filter&map&reduce方法

递归函数和匿名函数的使用介绍 | 手把手教你入门Python之四十四

map的使用

递归函数和匿名函数的使用介绍 | 手把手教你入门Python之四十四

reduce的使用

递归函数和匿名函数的使用介绍 | 手把手教你入门Python之四十四
递归函数和匿名函数的使用介绍 | 手把手教你入门Python之四十四
递归函数和匿名函数的使用介绍 | 手把手教你入门Python之四十四

内置函数总结

递归函数和匿名函数的使用介绍 | 手把手教你入门Python之四十四

递归函数和匿名函数的使用介绍 | 手把手教你入门Python之四十四
递归函数和匿名函数的使用介绍 | 手把手教你入门Python之四十四

上一篇:oracle查看包存储过程,函数,以及存储过程参数,函数参数


下一篇:Canvas的效果操作及save()和restore()方法应用