递归
递归的特点
- 函数内部自己调用自己;
- 必须有出口(退出)。
递归的执行流程
```python求累计和——递归
def sum_num(num1): if num1 == 1:
return num1 + sum_num(num1 - 1)return 1
num2 = sum_num(3) print(num2)
![](https://cdn.nlark.com/yuque/0/2021/jpeg/566095/1639978532535-bddd3728-7103-46ec-b8fb-90f860cc2904.jpeg)
<a name="fcbsQ"></a>
# `lambda`表达式
如果一个函数有**一个返回值**,并且**只有一句代码**,可以使用`lambda`进行简化。
<a name="He9BP"></a>
## 定义形式
```python
lambda 参数 : 表达式
其中:
1. 参数为可选项;
2. lambda表达式能接收任意数量的参数,但只能返回一个表达式的值。
# 函数
def fun1(a, b):
return a + b
print(fun1(1, 2))
# lambda表达式
fun2 = lambda a, b: a + b
print(fun2(2, 3))
lambda
参数形式
无参数
fun1 = lambda: 100
print(fun1()) # 100
一个参数
fun1 = lambda a: a
print(fun1("hello")) # hello
默认参数
fun1 = lambda a, b, c=100: a + b + c
print(fun1(1, 2)) # 103
可变参数(*args
)
fun1 = lambda *args: args
print(fun1(10, 20)) # (10, 20)
可变参数(**kwargs
)
fun1 = lambda **kwargs: kwargs
print(fun1(id=10, age=20)) # {'id': 10, 'age': 20}
lambda
的应用
带判断的lambda
fun1 = lambda a, b: a if a > b else b
print(fun1(2, 3)) # 3
列表数据按字典的key
值排序(重要功能应用)
students = [{"name": "Tom", "age": 20, "gender": "男"},
{"name": "Rose", "age": 22, "gender": "女"},
{"name": "小明", "age": 18, "gender": "男"}]
students.sort(key=lambda x: x["name"]) # 核心代码,x代表的是字典
print(students)