☰
Python CLI Todo:一次数据结构错误引发的 Bug
2026/9/29 12:32:52 网站建设 项目流程

今天做 CLI Todo 时遇到了一个很典型的 Bug。

删除任务时,我原本应该保存整个任务列表:

save_tasks(tasks)

却误写成了:

save_tasks(task)

结果tasks.json从原来的列表:

[ { "id": 5, "title": "学习Docker", "done": true } ]

变成了一个字典:

{ "id": 5, "title": "学习Docker", "done": true }

之后程序执行:

for task in tasks: if task["id"] == task_id:

由于tasks已经变成字典,遍历它得到的是"id"、"title"、"done"这些字符串,而不是任务字典,因此最终出现:

TypeError: string indices must be integers

这次 Debug 学到的东西

看到 traceback 后,不应该只盯着最后一行。

应该沿着调用链检查:

TypeError ↓ find_task() ↓ tasks 的类型不对 ↓ 检查 tasks.json ↓ 发现数据结构已经被破坏 ↓ 继续向上找写入数据的地方 ↓ 发现 save_tasks(task) 写错

真正的问题不是find_task(),而是上游写入的数据结构已经发生了变化。

一个简单的 Debug 模型

当错误出现在某个函数里时,不一定是这个函数本身有问题。先确认它拿到的数据是否符合预期。

这类“上游数据错误 → 下游出现看似无关的异常”在实际开发中非常常见。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询