跳转至

一个月 Python 进阶路线(2026-09-08 → 10-07)

定位:接在 Day 1–3 之后,把 Python 从"会写小程序"练到"能写工程化服务"——语言进阶、工程规范、类型系统、Pydantic、日志/正则/文件/SQLite、并发与 asyncio、httpx、FastAPI、测试进阶、架构与封装。本仓库只讲 Python;LLM、agent、MCP 等归 learn-agent 仓库。但每个模块都标注了它是 learn-agent 哪一天的前置知识,两条线可以对照推进。

时间盘子(按你给的数字 + 国务院 2026 年假期安排核实):工作日晚自习 18:00–22:00 = 4h;周六日、中秋(9/25–27)、国庆(10/1–7)每天 10h+;9/20(周日)调休上课,只有 4h。Day 3 之后合计约 198 小时在座时间、约 150 小时有效学习

learn-agent 的冲突:它也排在 9/7–10/6、约 170 小时。同一批小时不能用两次。本路线按"Python 独占全部时间"排出完整版,同时给出并行版最低配置(第 6 节);你自己决定怎么切分,两份计划都不会因此失效——本路线的模块是可拆卸的,每个模块标了小时数与前置依赖。


1. 一个月后你能做到什么

  1. 读懂并写出使用生成器、装饰器、上下文管理器、数据模型(魔术方法)、Protocoldataclass/Enum 的代码,说出每种写法解决什么问题。
  2. 用 src 布局 + pyproject.toml + uv 组织一个可安装、有命令行入口、有类型检查、ruff 零警告、pytest 覆盖率 ≥80% 的包,并用 Git 提交到 cnb.cool。
  3. 用 Pydantic 定义带约束的数据模型、做校验与序列化、生成 JSON Schema、用 pydantic-settings 管配置与密钥。
  4. 正确使用 logging(分级、格式、文件轮转、JSON 结构化)、正则、pathlibjson/tomllib/csvsqlite3
  5. 判断一个任务该用 asyncio、线程还是进程,写出结构化并发的 asyncio 代码(TaskGroup、超时、取消、限流),用 httpx 做同步/异步/流式 HTTP 请求并正确重试。
  6. 用 FastAPI 写一个分层清晰(路由 / 服务 / 仓储 / 模型)、有依赖注入、有 SSE 流式端点、有测试的 HTTP 服务,并能在 Linux 服务器上跑起来。
  7. 交付综合项目 Notebook Service(第 7 节):它的每一块都是 learn-agent 里 StudyBuddy 要用的积木(FastAPI + SSE、SQLite 记忆、Pydantic 模型、httpx 客户端、日志、测试)。

2. 日历

节奏:工作日晚上 = 复习 + 1 个新知识块 + 练习(3 个 50+10 块 + 40 分钟收尾);周末/假期 = 8 个块(上午 3、下午 3、晚上 2)+ 1 小时复盘。每周日晚(或该周最后一个大块日):周测 40 分钟(闭卷)+ AI 代码评审 30 分钟。每周一晚开头:上周内容 15 分钟闭卷回忆

日期 在座时长 主题 周产出
0 9/5 六 – 9/7 一 10 + 10 + 4 Day 1–3(已有计划) 成绩单 v2、周一项目
1 9/8 二 – 9/13 日 4×4 + 10×2 = 36h 语言进阶:迭代器/生成器、闭包/装饰器、上下文管理器、数据模型与魔术方法、OOP 进阶、异常进阶、3.12–3.14 语法 小项目 文本处理管线(生成器管线 + 装饰器注册表)
2 9/14 一 – 9/20 日 4×5 + 10 + 4 = 34h 工程化:项目结构与 uv 打包、Git/cnb.cool、typing 进阶与类型检查器、ruff/docstring 规范、Pydantic、logging、配置与密钥、正则、文件与序列化、SQLite 小项目 知识库 CLI(typer + Pydantic + SQLite + logging)
3 9/21 一 – 9/27 日 4×4 + 10×3 = 46h 并发与网络:pytest 进阶、线程/进程/subprocessasynciohttpx 与重试/流式、性能测量 小项目 并发抓取聚合器(async httpx + 限流 + 重试 + 测试)
4 9/28 一 – 10/4 日 4×3 + 10×4 = 52h 服务与架构:HTTP/REST、FastAPI(4 天)、分层与封装、安全基础、Linux 上运行;10/3–10/4 开始综合项目 Notebook Service v0.1
收官 10/5 一 – 10/7 三 10×3 = 30h 综合项目完成、结业测验、三档复评、复盘与后续路线 Notebook Service v1.0 + 复盘

3. 模块总表(小时数 = 在座时间;档位 = 该模块的核心要求)

# 模块 时长 前置 learn-agent 触点
M1 迭代器、生成器、itertools 1 6h Day 2 流式输出的 Python 基础(生成器/异步生成器)
M2 闭包、装饰器、functoolsinspect 1 8h M1 Day 3 @tool 装饰器、inspect.signature
M3 上下文管理器;函数式工具的定位 1 4h M2 资源管理、async with
M4 数据模型与魔术方法、dataclass/Enum 进阶、OOP 进阶(组合、ABC、Protocol 1 10h Day 2 工具/消息/记忆的领域模型;Protocol 定义接口
M5 异常进阶;3.12–3.14 语法专题(match 进阶、PEP 695、t-strings) 1 4h Day 2 工具错误如何变成模型可读文本
M6 项目结构、uv 打包、入口点、PEP 723 脚本;Git 工作流与 cnb.cool 2 6h Day 3 Day 1 环境;每天提交
M7 typing 进阶、类型检查器(ty/pyright)、ruff 规则、docstring 规范 2 6h M4 Day 2 类型注解 → JSON Schema
M8 Pydantic:模型、字段、校验、序列化、JSON Schema、Settings 2 8h M7 Day 2 结构化输出、Day 3 参数校验
M9 logging;配置与密钥(.env、pydantic-settings、tomllib 2 4h M6 可观测性、密钥管理
M10 正则表达式 2 4h Day 1 解析模型输出、清洗文本
M11 文件与序列化进阶;SQLite 2 4h Day 2 记忆持久化
M12 pytest 进阶(fixture、conftest、mock、覆盖率) 3 4h Day 2 工具与 agent 的测试
M13 并发模型:线程、进程、concurrent.futuressubprocess 3 6h M3 执行命令行工具、CPU 密集任务
M14 asyncio:Task/TaskGroup/超时/取消/限流/队列/异步生成器 3 10h M1, M3 Day 3 并发调用多个模型;SSE
M15 httpx:同步/异步/流式、超时、错误、重试(tenacity)、mock 测试 3 6h M14 所有 API 调用的底座
M16 性能与观测基础:perf_countercProfiletracemalloc 3 3h M13 找出慢在哪
M17 HTTP/REST/JSON Schema 基础;FastAPI(参数、Pydantic、依赖注入、路由拆分、lifespan、SSE、测试) 4 16h M8, M14, M15 Week 4 FastAPI + SSE 接口
M18 架构与封装:分层、Protocol 接口、依赖注入、错误边界、领域模型 vs 传输模型、Python 里真正常用的模式 4 8h M4, M17 agent 的可测试架构
M19 安全基础;在 Linux 服务器上运行(SSH、uv、uvicorn、tmux);Docker 知道存在 4 4h M17 部署到 H20 服务器
M20 综合项目 Notebook Service 4–收官 50h 全部 StudyBuddy 的骨架

三档标注沿用 Day 1–3 的定义(A 必须掌握 / B 了解会用 / C 知道存在),每个模块内部的分档见对应周计划。

4. 学习方法(沿用,微调)

  • 50+10 PRIMM 块8 分钟自检后再问 AIAI 七条规则ai-guide.md)全部沿用。进阶阶段新增一条:读源码——每周挑一个标准库模块(contextlibfunctoolsdataclasseslogging)读 100 行,这是从"会用"到"懂"的捷径。
  • 工作日晚上的结构:18:00–18:10 打开昨天的日志,决定今晚 3 块做什么 → 块 1 复习 + 昨日练习收尾 → 块 2 新知识 → 块 3 练习 → 21:10–21:40 小项目推进 → 21:40–22:00 日志 + 明日预览。不在工作日晚上开新的大块(asyncio、FastAPI 的第一天都排在周末/假期)。
  • 每天一次 git commit(第 2 周起):提交信息用简版 Conventional Commits(feat: ...fix: ...docs: ...test: ...)。
  • 周测:闭卷 20 题(10 道预测输出、5 道找 bug、5 道写函数),40 分钟;错题进下周一的回忆清单。
  • 睡眠:晚自习结束 22:00,23:00 前睡。学习科学的结论没有变。

5. 每周的"完成标准"

最低完成标准(没做到就不开下一周的新模块,用周日补)
1 exercises/week1 全部 [OK];文本处理管线能跑;能默写:生成器函数、带 wraps 的装饰器、@contextmanager__repr__/__eq__/__hash__Protocol
2 知识库 CLI 能 uv run kb add/list/searchruff check 与类型检查零错误;pytest --cov ≥80%;已推送到 cnb.cool;能默写:Pydantic 模型 + field_validatorlogging.getLogger(__name__) 配置、re.finditer 命名分组
3 聚合器线程池版比顺序快 ≥5 倍、asyncio 版 ≥2 倍且有重试;能默写:TaskGroup + asyncio.timeouthttpx.AsyncClient 复用、pytest fixture + monkeypatch
4 FastAPI 服务有 ≥6 个端点、SSE 端点、TestClient 测试;能画出分层图并说明每层的职责
收官 Notebook Service 验收清单全勾;结业测验 ≥80%;三档复评完成

6. 与 learn-agent 并行时的最低配置

如果 Python 线只能拿到一半时间(约 75 小时有效),按下面顺序做,砍掉其余:

  1. 必做(≈45h):M2 装饰器 + inspect(6h)→ M4 数据模型与 Protocol(6h)→ M7 typing(4h)→ M8 Pydantic(8h) → M9 logging + 配置(3h)→ M14 asyncio(8h)M15 httpx(4h) → M12 pytest 进阶(3h)→ M6 结构与 Git(3h)。
  2. 次优先(≈20h):M1 生成器(4h)→ M3 上下文管理器(2h)→ M11 文件 + SQLite(3h)→ M10 正则(2h)→ M17 FastAPI 精简版(9h:参数/Pydantic/依赖注入/SSE/测试)。
  3. 只读不练(≈10h):M5、M13、M16、M18、M19 各读核心结论 + 跑一遍示例。
  4. 综合项目:不做 Notebook Service,把 StudyBuddy 当作综合项目,但用本仓库 plan/capstone.md 的验收清单去检查它的 Python 质量(分层、测试、日志、类型)。

对应关系:learn-agent Day 2(类型/Pydantic/JSON)→ 先做 M7 + M8;Day 3(装饰器/inspect/async/httpx)→ 先做 M2 + M14 + M15;Week 2 记忆(SQLite)→ M11;Week 4 FastAPI + SSE → M17。

7. 综合项目速览:Notebook Service

一个"个人知识库"HTTP 服务 + 命令行客户端,只用本仓库学到的 Python 知识,不含任何 LLM 调用:

  • FastAPI/notes 增删改查、/notes/search?q=(正则/关键词)、/import(从 Markdown 目录批量导入,后台任务)、/events(SSE 推送导入进度)、/health
  • Pydantic:请求/响应模型、pydantic-settings 读配置与密钥、JSON Schema 自动出现在 /docs
  • 仓储层Protocol 定义 NoteRepositorySqliteNoteRepository 实现 + InMemoryNoteRepository 供测试。
  • httpx:异步客户端从一个公开 API 拉取数据(带超时与 tenacity 重试),演示"服务调外部服务"。
  • logging:控制台 rich + 文件 JSON 轮转;每个请求一条结构化日志。
  • typer CLInb add/list/search/import,通过 httpx 调自己的服务。
  • 测试:单元(仓储、服务)+ API(TestClient)+ 异步(httpx mock);pytest --cov ≥80%。
  • 工程:src 布局、uv build 可安装、ruff 与类型检查零错误、README、Git 历史干净、推送 cnb.cool;可选:在 H20 服务器上用 uv run uvicorn 跑起来并用 ssh -L 在本机访问。

详细规格、里程碑与验收清单见 plan/capstone.md(周 4 结束前给出)。

8. 文件导航

文件 内容
plan/month-overview.md 本文
plan/week1.mdplan/week4.md 每周逐日计划:知识点分档、阅读、预测代码、练习规格、小项目、周测
plan/capstone.md Notebook Service 规格与验收
exercises/week1/ … week4/ 练习骨架 + pytest 测试 + 周测 quiz_weekN.mdexercises/solutions/weekN/ 参考答案与周测答案
exercises/final/ 结业测验(笔答 + 限时编码);答案与参考实现在 exercises/solutions/final/
projects/kb/projects/aggregator/ 第 2、3 周小项目(uv workspace 成员):骨架 + 完整测试 + README 验收;参考答案在 exercises/solutions/week2/kb_solutionweek3/aggregator_solution
projects/notebook/ 综合项目,10/2 起自己从 uv init --package 开始搭(记得把它加进根 pyproject.tomldependencies[tool.uv.sources]
research/07 … 13 本路线依据的 7 份调研报告(2026-09-05 核实)
checklist.md 第五–七部分 每周打卡、进阶 A 档自评表、结业复盘
tools/ 维护脚本:verify_solutions.py 验证全部答案;kb_skeleton.py / aggregator_skeleton.py 在骨架与答案之间切换