递归
递归的特点
- 函数内部自己调用自己;
- 必须有出口(退出)。
递归的执行流程
```python求累计和——递归
def sum_num(num1): if num1 == 1:
return num1 + sum_num(num1 - 1)return 1
num2 = sum_num(3) print(num2)
<a name="fcbsQ"></a># `lambda`表达式如果一个函数有**一个返回值**,并且**只有一句代码**,可以使用`lambda`进行简化。<a name="He9BP"></a>## 定义形式```pythonlambda 参数 : 表达式其中:1. 参数为可选项;2. lambda表达式能接收任意数量的参数,但只能返回一个表达式的值。
# 函数def fun1(a, b):return a + bprint(fun1(1, 2))# lambda表达式fun2 = lambda a, b: a + bprint(fun2(2, 3))
lambda参数形式
无参数
fun1 = lambda: 100print(fun1()) # 100
一个参数
fun1 = lambda a: aprint(fun1("hello")) # hello
默认参数
fun1 = lambda a, b, c=100: a + b + cprint(fun1(1, 2)) # 103
可变参数(*args)
fun1 = lambda *args: argsprint(fun1(10, 20)) # (10, 20)
可变参数(**kwargs)
fun1 = lambda **kwargs: kwargsprint(fun1(id=10, age=20)) # {'id': 10, 'age': 20}
lambda的应用
带判断的lambda
fun1 = lambda a, b: a if a > b else bprint(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)
