← 知识手册目录程序组织 · GESP 4 / 5 / 6 级相关跳到完整速查 ↓

PYTHON KNOWLEDGE · 07

函数、参数、返回值与作用域

用明确的输入、输出和职责拆分程序,理解参数绑定、作用域、递归与可变对象。

GESP 4GESP 5GESP 6

01 · FORMAL DEFINITION

正式定义

函数把一段可复用行为绑定到名字。调用时实参按规则绑定到形参,函数执行后用 return 交回结果;没有显式 return 时返回 None。名字解析遵循局部、闭包、全局、内置的 LEGB 顺序。

02 · MUST KNOW

学完这一章,必须说清楚的规则

  1. 01

    位置参数先于关键字参数;默认值在 def 执行时创建一次,不应直接使用可变容器作默认值。

  2. 02

    return 立即结束当前函数;return a, b 实际返回一个元组。

  3. 03

    函数内赋值默认创建局部变量;global 声明模块级名字,nonlocal 声明最近外层函数名字。

  4. 04

    传参传递的是对象引用;函数是否影响调用方取决于对象是否可变以及函数是否原地修改。

  5. 05

    递归必须有可到达的终止条件,并要考虑调用深度、重复子问题和栈空间。

  6. 06

    纯函数更容易测试;把输入输出、计算逻辑和全局状态分开能显著减少错误。

03 · RUNNABLE EXAMPLE

可运行示例与因果解释

PYTHON
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 只能包含一个表达式,适合短小的排序键,不适合塞入复杂业务逻辑。
  • 装饰器、生成器和闭包属于函数模型的进阶应用,应在基本参数与作用域稳定后学习。