← 返回学习笔记
调试方法

学习手记 / 03

遇到错误,先做一个最小复现

留下输入、预期与实际结果,逐步缩小问题发生的范围。

把大问题缩成一个可以稳定重现的小例子,往往比不断改动整段程序更容易定位原因。

先记录三个事实

  1. 输入是什么:保留能触发问题的最小数据。
  2. 原本期望什么:写出明确的结果或规则。
  3. 实际发生什么:记录返回值、异常类型和必要的运行条件。

用一个边界问题练习

计算平均值时,非空列表容易处理;空列表应该怎样返回,需要先明确约定。这里选择抛出异常,避免把“没有数据”混同为平均值为 0。

def average(values):
    if not values:
        raise ValueError("至少需要一个数值")
    return sum(values) / len(values)

assert average([2, 4, 6]) == 4

try:
    average([])
except ValueError as error:
    print(error)

一次只改变一个条件

先确认最小示例能够稳定失败,再逐个排除输入、依赖版本和代码分支。修正后同时检查原有正常输入和触发错误的输入,避免只让一个案例通过。

学习小结

先复现,再缩小范围,最后验证修正。分享复现材料时,移除账号、密码、令牌和其他个人信息。