递归

递归是一种编程思想

递归的特点

  • 函数内部自己调用自己;
  • 必须有出口(退出)

    递归的执行流程

    ```python

    求累计和——递归

    def sum_num(num1): if num1 == 1:
    1. return 1
    return num1 + sum_num(num1 - 1)

num2 = sum_num(3) print(num2)

  1. ![](https://cdn.nlark.com/yuque/0/2021/jpeg/566095/1639978532535-bddd3728-7103-46ec-b8fb-90f860cc2904.jpeg)
  2. <a name="fcbsQ"></a>
  3. # `lambda`表达式
  4. 如果一个函数有**一个返回值**,并且**只有一句代码**,可以使用`lambda`进行简化。
  5. <a name="He9BP"></a>
  6. ## 定义形式
  7. ```python
  8. lambda 参数 : 表达式
  9. 其中:
  10. 1. 参数为可选项;
  11. 2. lambda表达式能接收任意数量的参数,但只能返回一个表达式的值。
  1. # 函数
  2. def fun1(a, b):
  3. return a + b
  4. print(fun1(1, 2))
  5. # lambda表达式
  6. fun2 = lambda a, b: a + b
  7. print(fun2(2, 3))

lambda参数形式

无参数

  1. fun1 = lambda: 100
  2. print(fun1()) # 100

一个参数

  1. fun1 = lambda a: a
  2. print(fun1("hello")) # hello

默认参数

  1. fun1 = lambda a, b, c=100: a + b + c
  2. print(fun1(1, 2)) # 103

可变参数(*args

  1. fun1 = lambda *args: args
  2. print(fun1(10, 20)) # (10, 20)

可变参数(**kwargs

  1. fun1 = lambda **kwargs: kwargs
  2. print(fun1(id=10, age=20)) # {'id': 10, 'age': 20}

lambda的应用

带判断的lambda

  1. fun1 = lambda a, b: a if a > b else b
  2. print(fun1(2, 3)) # 3

列表数据按字典的key值排序(重要功能应用)

  1. students = [{"name": "Tom", "age": 20, "gender": "男"},
  2. {"name": "Rose", "age": 22, "gender": "女"},
  3. {"name": "小明", "age": 18, "gender": "男"}]
  4. students.sort(key=lambda x: x["name"]) # 核心代码,x代表的是字典
  5. print(students)