1、了解递归
1.1递归的作用
① 递归作为一种编程思想, 在我们日常开发中,若需要遍历一个文件夹下面所有的文件,为了化简代码,更加高效,通常会使用递归来实现;
② 帮我们完成一写高级算法,例如:快速排序等。
1.2 递归的特点
函数内部自己调用自己,且必须要有出口。
1.3 应用练习 体会递归
# 应用练习:求解3以内数字累加和:3 + 2 + 1
# 6 = 3 + 2以内数字累加和
# 2以内数字累加和 = 2 + 1以内数字累加和
# 1以内数字累加和 = 1
def sum_numbers(num):
# 1.如果是1,直接返回1 -- 出口
if num == 1:
return 1
# 2.如果不是1,重复执行累加:当前数字 + 当前数字-1累加和
result = num + sum_numbers(num-1)
# 3.返回累加结果
return result
sum_result = sum_numbers(3)
print(sum_result)
# 体会递归特点:函数内部自己调用自己;必须要有出口。
练习后发现若未设置出口,执行后会报错:超出最大递归深度,因此在以后的递归书写中要注意书写递归的出口。
2、lambda
2.1 作用
简化代码量,节省计算机的内存开销。如果一个函数有一个返回值,并且只有一句代码,可以使用 lambda简化。
2.2 lambda语法
lambda 参数列表 : 表达式
需要注意的是:
① lambda表达式的参数可有可无,函数的参数在lambda表达式中完全适用。
② lambda函数能接收任何数量的参数但只能返回一个表达式的值。
应用练习:
# 练习:返回数100
# 1、函数
def fn1():
return 100
print(fn1)
print(fn1())
# 2、lambda表达式 匿名函数
# lambda 参数列表 : 表达式
fn2 = lambda: 100
print(fn2) #返回的是lambda内存地址
# 100返回值,调用函数
print(fn2())
通过练习后对比发现,lambda表达式可以简化代码量;直接打印lambda表达式,输出的是此lambda的内存地址。
2.3 lambda 参数
lambda的参数形式与之前所学的函数参数函数的参数介绍及使用基本一致,这里作回顾总结。
# lambda 参数
# 1、无参数
fn1 = lambda: 100
print(fn1())
# 2、一个参数
fn2 = lambda a: a
print(fn2('Python'))
# 3、默认参数/缺省参数
fn3 = lambda a, b, c = 10: a + b + c
print(1, 2)
print(1, 2, 3)
# 4、可变参数*args
fn4 = lambda *args: args
print(fn4(10, 20))
print(fn4(10, 20, 30, 40))
# 注意:这里的可变参数传入到lambda之后,返回值为元组。
# 5、可变参数**kwargs
fn5 = lambda **kwargs: kwargs
print(fn5(name='lisa'))
print(fn5(name='Lisa', age=18))