一.递归
1.什么是递归
递归就是函数自己调用自己。它把大问题拆成一个个小问题,直到小到能直接解决。比如算阶乘,n 的阶乘是 n 乘以(n-1)的阶乘,当 n 是 0 或 1 时,阶乘就是 1。用递归函数写出来很直接:
递归得有两个部分:
- 基线条件:让函数停止调用自己的条件,像阶乘里 n=0 或 1。
- 递归条件:函数调用自己解决更小的问题,比如 n 乘以(n-1)的阶乘。
2.递归怎么工作
递推:函数不断调用自己,把问题变小,直到碰到基线条件。
回归:从基线条件开始,一步步返回结果,最后得到大问题的答案.
3.递归的优点与缺点
优点
- 简洁:代码短,像算斐波那契数列,递归写法很直观。
- 好懂:符合人的思维,处理树这种结构时尤其明显。
缺点
- 耗内存:递归深了容易栈溢出。
- 可能慢:有重复计算,比如简单递归算斐波那契数列就很慢。
4.注意事项
终止条件(基线条件)和对应的边界值正是确保递归能正常工作的关键
二.lambd表达式
1.语法
变量 = lambda 函数参数:表达式(函数代码 + return返回值)
变量()
2.基本用法
(1)简单用法
(2)作为高阶函数的参数
在 sorted()
、map()
、filter()
等接收函数作为参数的高阶函数中,lambda 可简化参数传递
sorted():指定排列依据
map():对序列元素批量处理
filter():筛选符合条件的元素
(3)不定长参数*args:
(4)不定长参数**kwargs:
(5)带if判断(三目运算符)的lambda表达式:
3.注意事项
lambda 仅能包含单个表达式,无法写多行代码、循环或复杂条件(如需复杂逻辑,应定义普通函数)
三.全局变量
1.什么是全局变量
全局变量指的是在函数外部定义的变量,它的作用域(可访问范围)是整个模块(即当前脚本文件),函数内部可以读取全局变量的值,但修改时需要特殊声明
2.基本使用
3.函数内部修改全局变量
如果要在函数内部修改全局变量的值,需要用 global
关键字声明该变量是全局的,否则 Python 会把它当作一个新的局部变量:
4.全局变量与局部变量的冲突
当函数内部定义了与全局变量同名的局部变量时,局部变量会覆盖全局变量(在函数内部优先使用局部变量):
5.global关键字
(1)有什么用
global
关键字在 Python 中用于在函数内部声明变量为全局变量,从而允许在函数内部修改函数外部定义的变量。它的核心作用是打破函数的局部作用域限制,明确指定操作的是全局变量而非局部变量
(2)基本用法
(3)总结
global
关键字的核心功能是允许函数内部修改全局变量,使用时需明确区分全局变量和局部变量,避免不必要的命名冲突和逻辑混乱。