递归函数和匿名函数的使用介绍 | 手把手教你入门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))

原理

image.png

练习

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

image.png

image.png

image.png

递归的练习

image.png
image.png

image.png

匿名函数

⽤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,这样可以接受定义函数的过程,⽐如写⼀个简单的脚本管理服务器。

image.png
image.png

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

image.png
image.png

应用场合

函数作为参数传递

>>> 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方法的使用

image.png

image.png
image.png

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

image.png

Filter&map&reduce方法

image.png

map的使用

image.png

reduce的使用

image.png
image.png
image.png

内置函数总结

image.png

image.png
image.png

相关文章
|
4月前
|
SQL 关系型数据库 数据库
Python SQLAlchemy模块:从入门到实战的数据库操作指南
免费提供Python+PyCharm编程环境,结合SQLAlchemy ORM框架详解数据库开发。涵盖连接配置、模型定义、CRUD操作、事务控制及Alembic迁移工具,以电商订单系统为例,深入讲解高并发场景下的性能优化与最佳实践,助你高效构建数据驱动应用。
610 7
|
4月前
|
存储 JavaScript Java
(Python基础)新时代语言!一起学习Python吧!(四):dict字典和set类型;切片类型、列表生成式;map和reduce迭代器;filter过滤函数、sorted排序函数;lambda函数
dict字典 Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。 我们可以通过声明JS对象一样的方式声明dict
343 1
|
4月前
|
算法 Java Docker
(Python基础)新时代语言!一起学习Python吧!(三):IF条件判断和match匹配;Python中的循环:for...in、while循环;循环操作关键字;Python函数使用方法
IF 条件判断 使用if语句,对条件进行判断 true则执行代码块缩进语句 false则不执行代码块缩进语句,如果有else 或 elif 则进入相应的规则中执行
624 1
|
5月前
|
测试技术 开发者 Python
Python单元测试入门:3个核心断言方法,帮你快速定位代码bug
本文介绍Python单元测试基础,详解`unittest`框架中的三大核心断言方法:`assertEqual`验证值相等,`assertTrue`和`assertFalse`判断条件真假。通过实例演示其用法,帮助开发者自动化检测代码逻辑,提升测试效率与可靠性。
491 1
|
4月前
|
Java 数据处理 索引
(numpy)Python做数据处理必备框架!(二):ndarray切片的使用与运算;常见的ndarray函数:平方根、正余弦、自然对数、指数、幂等运算;统计函数:方差、均值、极差;比较函数...
ndarray切片 索引从0开始 索引/切片类型 描述/用法 基本索引 通过整数索引直接访问元素。 行/列切片 使用冒号:切片语法选择行或列的子集 连续切片 从起始索引到结束索引按步长切片 使用slice函数 通过slice(start,stop,strp)定义切片规则 布尔索引 通过布尔条件筛选满足条件的元素。支持逻辑运算符 &、|。
293 0
|
5月前
|
设计模式 缓存 监控
Python装饰器:优雅增强函数功能
Python装饰器:优雅增强函数功能
316 101
|
5月前
|
缓存 测试技术 Python
Python装饰器:优雅地增强函数功能
Python装饰器:优雅地增强函数功能
258 99
|
5月前
|
存储 缓存 测试技术
Python装饰器:优雅地增强函数功能
Python装饰器:优雅地增强函数功能
291 98
|
5月前
|
缓存 Python
Python中的装饰器:优雅地增强函数功能
Python中的装饰器:优雅地增强函数功能
|
4月前
|
Cloud Native 算法 API
Python API接口实战指南:从入门到精通
🌟蒋星熠Jaxonic,技术宇宙的星际旅人。深耕API开发,以Python为舟,探索RESTful、GraphQL等接口奥秘。擅长requests、aiohttp实战,专注性能优化与架构设计,用代码连接万物,谱写极客诗篇。
Python API接口实战指南:从入门到精通

推荐镜像

更多