Python 高级工程师实战教程
面向 5 年经验 Go 后端工程师 的 Python 进阶教程。目标不是「能跑 AI 生成的脚本」,而是能在真实项目里像高级工程师一样用 Python——理解每个特性的设计意图、适用场景、收益与代价。
总字数:约 10.7 万字(106,664 中文字)| 30 篇(1 篇导读 + 28 篇技术章 + 1 篇收尾)| 每篇独立成文件,技术阅读带思考约 30 分钟。
这份教程怎么用
- 对话式:正文用「墨叔」(导师)和「老哥」(你,Go 工程师)对谈推进,多反问。看到反问先自己答,再往下看。
- Go 对照镜:你熟的东西当锚点,几乎每章都拿 Go 类比,比从零讲快十倍。
- 三锚点:每章都回答——「怎么用 / 什么场景用 / 收益与代价」。
- 章末【思考题】+【参考答案】:思考题先自己想,参考答案当教材看(详实、有代码),不是测验。
- 建议顺序读:后面章频繁引用前面概念。挑读也行,但第 1 章(思维对撞)和第 2 章(类型系统)建议先读。
六层结构 · 章节地图
第零层 · 起点
- 00-导读:从 Go 老兵到 Python 高级工程师 — 为什么写、怎么用、阅读心态
第一层 · 语言特性(内功)
- 01-Python 与 Go 的思维方式对撞 — 动态vs静态、鸭子类型、EAFP vs LBYL
- 02-类型系统进阶:type hints 是工程契约 — typing、泛型、Protocol、mypy
- 03-装饰器:给函数穿衣服的艺术 — 闭包、functools.wraps、场景(对照 Go 中间件)
- 04-生成器与迭代器:惰性计算救内存 — yield、send/yield from、流式
- 05-上下文管理器:Python 的 defer — with、@contextmanager、contextvars
- 06-函数式工具箱:functools 与 itertools — lru_cache、partial、reduce、itertools
- 07-数据模型与魔术方法 — dunder、str/repr、运算符重载
- 08-描述符与 @property — 描述符协议、ORM/pydantic 底层
- 09-枚举与模式匹配:告别魔法字符串 — enum、match/case
第二层 · 工程化(进生产环境的门槛)
- 10-包与模块:import 机制深坑 — 导入、循环依赖、命名空间包
- 11-虚拟环境与依赖管理 — venv、pyproject、poetry/uv、lockfile
- 12-配置与环境:pydantic 实战 — 12-factor、环境变量、配置即类型
- 13-异常设计:Python 的错误处理哲学 — 异常层级、自定义、异常链(对照 Go error)
- 14-日志:logging 模块与结构化 — level/handler、结构化日志
第三层 · 并发与性能
- 15-并发全景:GIL 卡了什么 — GIL、threading/asyncio/multiprocessing 决策树
- 16-asyncio 深度:事件循环与任务 — async/await、Task、取消与超时
- 17-异步生态实战:httpx 与异步数据库 — 异步请求、异步 DB、混用陷阱
- 18-多线程与多进程实战 — concurrent.futures、进程间通信
- 19-性能剖析与优化 — cProfile、内存、slots、缓存
第四层 · 数据与标准库
- 20-dataclasses 与数据结构 — dataclass/attrs、默认值坑
- 21-序列化与数据交换 — json/pickle、模型互转、版本兼容
- 22-标准库精读:collections/pathlib/datetime — 高频标准库精讲
- 23-文件与 IO:编码坑与流式 — 编码、大文件、临时文件
- 24-调试与排错:pdb 与 traceback 阅读 — pdb、读懂报错、诡异 bug 套路
第五层 · 测试与质量
- 25-测试工程:pytest 全家桶 — fixture、parametrize、mock、覆盖率
- 26-代码质量流水线 — ruff、black、mypy、pre-commit、CI
第六层 · 设计模式与实战
- 27-设计模式 Python 式写法 — 单例/工厂/策略/DI 的 Pythonic 实现
- 28-项目结构最佳实践 — 可安装包、分层、CLI 入口
- 29-项目实战:FastAPI 分层服务骨架 — 串起全篇的可运行小服务
- 30-进阶路线与收尾:从「会用」到「精通」 — 学习地图、下一步(无思考题)
按场景速查(遇到问题翻哪章)
| 你遇到的麻烦 | 翻 |
|---|---|
| 类型老出错 / 想让 mypy 帮忙 | 02 |
| 给函数统一加日志/缓存/鉴权 | 03 |
| 大文件、流式、省内存 | 04、23 |
| 资源清理(类 Go defer) | 05 |
| 写缓存、函数组合 | 06 |
| 让对象用起来像内置类型 | 07 |
| 看不懂框架源码里的描述符/校验 | 08 |
| 状态满天飞魔法字符串 | 09 |
| import 报错、循环依赖 | 10 |
| 依赖装不明白、构建不可复现 | 11 |
| 配置管理乱 | 12 |
| 错误处理哲学拿不准 | 13 |
| 上线全是 print | 14 |
| 并发选型懵 | 15 |
| 高并发 IO | 16、17 |
| CPU 密集算得慢 | 18、19 |
| 数据结构样板太多 | 20 |
| 序列化对不齐 | 21 |
| 标准库不会挑 | 22 |
| 本地调试抓瞎 | 24 |
| 测试写不顺 | 25 |
| 代码质量没保障 | 26 |
| 设计模式硬套 | 27 |
| 项目目录一团乱 | 28 |
| 想看全套怎么串 | 29 |
写在最后
教程只是方向。真正从 L1「能跑」到 L2「能设计」,靠的是把每章【思考题】真写出来、读一个常用库源码、用 Python 重写你自己的一个 Go 小工具。详见第 30 章。
—— 墨叔