logo
28

函数基础

⏱️ 35分钟

函数(Functions):把重复逻辑封装成可复用能力

你现在可能会困惑什么

“我直接往下写也能跑,为什么要封函数?”

因为函数让你代码可复用、可测试、可维护。 没有函数,大一点的项目会很快失控。

一句话定义

函数是带名字的逻辑块,接收参数并返回结果。

生活类比

像厨房预制酱料: 配方写好后可反复复用,不用每次从零开始。

最小可运行例子

def greet(name):
    return f"Hello, {name}!"

print(greet("Alice"))

参数与默认值

def add(a, b=0):
    return a + b

print(add(2, 3))
print(add(5))

返回多个值

def min_max(nums):
    return min(nums), max(nums)

mn, mx = min_max([3, 8, 1, 6])
print(mn, mx)

设计建议(新手版)

  • 一个函数只做一件事
  • 函数名描述行为而非实现细节
  • 输入输出明确,减少隐式依赖

课堂小测(5 分钟)

  1. calc_tax(amount, rate=0.1)
  2. 写函数计算列表平均值(空列表要保护)。
  3. 写函数判断字符串是否回文。

课堂小测参考答案与判分点

  • 参考答案方向:能写出可运行代码,并覆盖题目中的核心条件与边界输入。
  • 判分点 1(正确性):主流程结果正确,关键分支可执行。
  • 判分点 2(可读性):变量命名清晰,结构不过度嵌套。
  • 判分点 3(健壮性):对空值、类型错误或异常输入有基础保护。

迁移任务(课后)

把“输入-计算-输出”大脚本拆成 3 个函数并组合调用。

本节验收标准

你能独立做到:

  • 定义并调用函数
  • 正确使用参数和返回值
  • 用函数拆分重复逻辑

常见报错与调试步骤(新手版)

  • 报错看不懂:先读最后一行错误类型(如 TypeErrorNameError),再回到对应代码行定位。
  • 不确定变量值:在关键位置临时 print(变量, type(变量)),先确认数据是否符合预期。
  • 改了代码却没生效:确认文件已保存、运行的是当前文件、终端环境(venv)是否正确。

常见误区

  • 误区:一个函数做太多事。

  • 正解:保持单一职责。

  • 误区:默认参数使用可变对象(如 [])。

  • 正解:默认参数尽量使用不可变值。