PYTHON KNOWLEDGE · 07
函数、参数、返回值与作用域
用明确的输入、输出和职责拆分程序,理解参数绑定、作用域、递归与可变对象。
GESP 4 级GESP 5 级GESP 6 级
01 · FORMAL DEFINITION
正式定义
函数把一段可复用行为绑定到名字。调用时实参按规则绑定到形参,函数执行后用 return 交回结果;没有显式 return 时返回 None。名字解析遵循局部、闭包、全局、内置的 LEGB 顺序。
02 · MUST KNOW
学完这一章,必须说清楚的规则
- 01
位置参数先于关键字参数;默认值在 def 执行时创建一次,不应直接使用可变容器作默认值。
- 02
return 立即结束当前函数;return a, b 实际返回一个元组。
- 03
函数内赋值默认创建局部变量;global 声明模块级名字,nonlocal 声明最近外层函数名字。
- 04
传参传递的是对象引用;函数是否影响调用方取决于对象是否可变以及函数是否原地修改。
- 05
递归必须有可到达的终止条件,并要考虑调用深度、重复子问题和栈空间。
- 06
纯函数更容易测试;把输入输出、计算逻辑和全局状态分开能显著减少错误。
03 · RUNNABLE EXAMPLE
可运行示例与因果解释
def append_score(score, scores=None):
if scores is None:
scores = []
scores.append(score)
return scores
print(append_score(90))
print(append_score(80))COMMON PITFALLS
常见误区
- 可变默认参数在多次调用间共享
- 忘记 return 导致得到 None
- 局部变量遮蔽全局同名变量
- 递归没有缩小问题规模
SCOPE & BOUNDARIES
适用边界
- lambda 只能包含一个表达式,适合短小的排序键,不适合塞入复杂业务逻辑。
- 装饰器、生成器和闭包属于函数模型的进阶应用,应在基本参数与作用域稳定后学习。