这是 Python 三卷体系里的中间卷。入门卷回答「会不会写」,高级卷回答「懂不懂原理」,而本卷回答的是最容易被跳过、也最影响交付质量的那个问题:一个真实项目从空目录到上线,中间到底要做哪些事、每一步怎么取舍。
《Python编程实战》目录
这一页是实战卷的总入口。它不只是章节清单,还交代了三卷之间的关系、本卷的读者画像、四个部分之间的依赖,以及两条可以直接照着走的阅读路径。如果你不确定从哪切入,先读「三卷之间的关系」与「读者画像」,再看「阅读路径」;如果你已经有明确目标,直接跳到「分部分章节」按编号定位。
全书结构是:18 章 × 3 节 = 54 节 + 本目录篇,共 55 篇。正文按工程推进的自然顺序分为四个部分:先搭基建,再写 Web 后端,然后处理数据与自动化,最后交付与运行。四个部分首尾相接,上一部分的产物就是下一部分的输入。
如何使用本目录
这一页有三种用法,取决于你此刻的状态:
刚开始读:按顺序看「三卷之间的关系」「读者画像与前置知识」「两条阅读路径建议」,用五分钟决定自己的入口章节。不要跳过这一步——选错入口比读得慢更浪费时间。
读到一半,想查某一节在哪:直接看「分部分章节」里对应部分的表格。每一行都有一句话说明,可以帮你确认是不是你要找的那一节,避免点进去再退出来的反复。
把它当手册用:优先用「常见问题速查」和每一节末尾的小结。遇到具体工程问题时,先在这里定位到章节,再进正文找细节。
三卷之间的关系
三卷不是三本可以随意挑选的书,而是一条有先后依赖的能力链。先用一张表把分工说清楚:
| 卷 | 回答的问题 | 典型内容 | 读完后能做什么 |
|---|---|---|---|
| 《Python编程入门》 | 会不会写 | 语法、类型、模块、异常、迭代、标准库、基础工程 | 能独立写出结构清晰、可测试的小程序 |
| 《Python编程实战》(本卷) | 会不会交付 | 脚手架、Web 后端、数据与自动化、部署与运行 | 能从空目录做出一个可上线、可运维的服务 |
| 《Python高级编程》 | 懂不懂原理 | 解释器与运行时、元编程、并发内核、性能深水区 | 能读懂底层机制、做架构级取舍 |
入门卷把语言本身讲透,实战卷假定你已经会写,把重点从「语言特性」整体搬到「工程决策」:用什么工具链、怎么分层、边界画在哪里、失败时怎么兜底。本卷刻意少讲语法,多讲取舍——同样一件事往往给出两条路线,并说明在什么条件下选哪条。
换句话说,入门卷给你的是「零件」,本卷教你的是「怎么把零件装成一台能跑的机器」,而高级卷则带你拆开机器,看清里面每个齿轮为什么这样咬合。
实战卷与入门卷有明确的承接关系。入门卷的第 14 章讲过 pytest 基础、第 15 章讲过打包、第 16 章讲过 FastAPI 快速上手,本卷则把这些「会用」升级为「可维护、可交付」:测试从能跑变成分层与门禁,打包从能构建变成可复现与可分发,Web 从能响应变成有分层、有生命周期、有可观测性。
如果你想先补齐前置知识,可以对照入门卷的相关章节;例如异步与并发看 async/await 与事件循环 ,类型系统看 类型注解语法与 pyright / mypy ,测试基础看 pytest 基础与断言 。需要完整的学习路线,可以回到 《Python编程入门》目录 。
读者画像与前置知识
本卷面向的是「能写 Python,但没独立做过完整生产项目」的人。你可以对照下面几类找到最接近自己的入口。
如果你已经能独立交付生产项目,本卷对你的价值更多在「体系化」与「查漏补缺」,可以直接用「常见问题速查」定位到自己最薄弱的一环。
写过脚本但没做过工程:你能用 Python 处理文件、调 API、写小工具,但项目一旦变大就不知道怎么组织。你最大的收获会来自第一部分与第二部分——脚手架、依赖、配置、测试、分层,这些正是「脚本」与「工程」之间那道看不见的门槛。
有其他语言的生产经验:你熟悉工程化,但 Python 的生态工具链与惯用法对你仍是陌生的。建议快速扫过第一部分里你已熟悉的部分,把精力放在 Python 特有的取舍上,例如虚拟环境与锁文件的配合、FastAPI 的依赖注入、SQLAlchemy 2.x 的显式风格。
后端 / 数据 / 自动化从业者:你已有明确方向,不必通读。后端方向集中读第二、四部分,数据与自动化方向集中读第三部分,然后按需补第一部分的对应章节。每章开头都交代了前置依赖,可以据此判断能否跳读。
时间有限、只想补一块短板:本卷每一部分都能单独成篇。你可以先看「常见问题速查」找到自己最痛的那个问题对应的章节,读完再决定要不要补相邻章节。但要记住,跳过第一部分,后面会反复遇到「看不懂为什么这么设计」的时刻。
前置知识有三条底线:能熟练使用命令行与虚拟环境;理解模块、包、异常与上下文管理器;写过至少一个带类型注解和测试的小项目。若这三条有欠缺,先回入门卷补课比硬读本卷更省时间。
另外,本卷默认你能读写英文文档与报错信息。工程实战里大量问题最终要靠查官方文档、读 traceback 和翻源码来解决,这项能力比记住任何 API 都重要;书里会刻意保留真实的报错原文,就是为了让你习惯直面它。
四个部分之间的依赖关系
四个部分是一条链,不是四块拼图。下表说明每一部分依赖什么、又被谁依赖:
| 部分 | 依赖 | 被依赖 | 能否跳过 |
|---|---|---|---|
| 第一部分 工程基建 | 入门卷语法与工具基础 | 全部后续部分 | 不建议跳过 |
| 第二部分 Web 后端工程 | 第一部分 | 第三、四部分 | 有后端经验者可挑读 |
| 第三部分 数据与自动化 | 第一部分 | 第四部分 | 可按方向选读 |
| 第四部分 交付与运行 | 第一、二、三部分 | 无 | 有运维经验者可挑读 |
一个实用的判断原则是:第一部分是绕不过去的地基。它建立的脚手架、依赖、配置、日志、测试五件事,在后面每一章都会被反复调用;跳过它,后面每章都要临时补课。其余三个部分则可以根据你的方向取舍:做 Web 就重点投入第二部分,做数据就重点投入第三部分,而第四部分的容器化、性能与可观测性,是所有方向都迟早会用到的收尾能力。
需要提醒的是,本卷正文的每一节都遵循「本节目标 → 正文小节 → 小结 → 衔接下一节」的结构,所以即使你从中间某节切入,也能通过开头的目标说明快速建立上下文。全书的章节之间用「上一节 / 下一节」串成一条线,从 1.1 一直连到 18.3,再回到本页。
本书的版本与运行口径
书中代码以 Python 3.12 为最低版本(requires-python = ">=3.12"),并在 Python 3.14.6 上实跑验证。第三方库的版本号以正文中标注的实测版本为准,例如 FastAPI 0.143.0、SQLAlchemy 2.1.4、pydantic 2.13.5、pandas 3.0.6。
凡本机没有对应服务或工具的章节(如 PostgreSQL、Redis、Docker、Playwright、PyInstaller),正文都会明确标注「未实测」并给出可跑的等价替代方案,不会把没跑过的输出当成实测结果。这一点在阅读时可以放心:凡是贴出的输出,都是真实跑出来的。
分部分章节
下面按四个部分列出全部 18 章 54 节,每一行给出编号、标题与一句话说明。编号规则是「章.节」,例如 12.1 表示第 12 章第 1 节;点击标题即可进入该节正文。
每一部分开头都有一段导读,说明它在整条工程路径中的位置;如果你只想知道某节讲什么,直接看表格第三列的说明即可。
第一部分 工程基建(第 1–4 章)
这一部分解决「项目怎么起、怎么配、怎么保证不退化」四个前置问题,读完能得到一套可提交、可协作、可复现的工程骨架。
节奏上,这一部分刻意把地基打厚。第 1 章从零搭建脚手架并接上静态检查,第 2 章解决依赖的可复现与多版本 CI,第 3 章把配置、日志、指标三件可观测性基础设施配齐,第 4 章建立分层的测试体系与覆盖率门禁。它们共同构成后面所有章节的运行底座。
| 编号 | 章节 | 说明 |
|---|---|---|
| 1.1 | 从零搭建:uv + ruff + 静态检查 | 用 uv 建出 src 布局项目,装 ruff 与 mypy 跑通第一次静态检查 |
| 1.2 | pyproject.toml 全解与类型检查分层 | 拆解 pyproject.toml 四个区段,用 mypy 三档分层守住核心逻辑 |
| 1.3 | 代码规范、pre-commit 与提交门禁 | 选好 ruff 规则集与豁免,用 git hook 做「不合格就拒绝提交」的门禁 |
| 2.1 | 依赖解析与锁文件 | 拆解 pip freeze 为何不可复现,对比 uv.lock 与 pylock.toml 及哈希锁定 |
| 2.2 | 私有源、镜像与离线安装 | 实测镜像索引配置与私有源凭证,演示一次完全离线的依赖安装 |
| 2.3 | 多版本 Python 矩阵与 CI 缓存 | 实测多版本解析,给出 GitHub Actions 矩阵与缓存键设计 |
| 3.1 | 分层配置与 pydantic-settings | 讲清配置来源优先级、校验与脱敏,并配合依赖注入落地 |
| 3.2 | 结构化日志与链路追踪 | 用 structlog 输出 JSON,用 contextvars 让 trace_id 贯穿全链路 |
| 3.3 | 指标、健康检查与告警接入 | 用 prometheus-client 埋点,设计健康检查并接入告警规则 |
| 4.1 | pytest 工程化:fixture 分层与插件 | conftest 向上合并、fixture 作用域与工厂型 fixture 防共享状态 |
| 4.2 | 集成测试与容器化测试环境 | 划清单元与集成边界,用 SQLite + fixture 搭等价数据层并讲隔离 |
| 4.3 | 属性测试、性能回归与覆盖率门禁 | 用 hypothesis 突破输入盲区,用 benchmark 与覆盖率卡住底线 |
第二部分 Web 后端工程(第 5–10 章)
这一部分用 FastAPI 把第一部分的基建变成一个真正分层的后端服务,读完能独立搭出一套带认证、缓存、队列与实时通信的 API 系统。
六个章节层层递进:第 5 章立起应用骨架与生命周期,第 6 章解决数据访问层,第 7 章把 HTTP 边界上的契约固化下来,第 8 章引入缓存与异步任务,第 9 章补上认证授权与安全,第 10 章处理长连接与实时推送。每一章都假设前面的层已经就位。
| 编号 | 章节 | 说明 |
|---|---|---|
| 5.1 | FastAPI 应用结构与依赖注入 | api/service/repository/schema 四层拆分,Depends 区分请求级与进程级依赖 |
| 5.2 | 路由、中间件与请求上下文 | 对比两种中间件写法,用 contextvars 传请求上下文并实测洋葱顺序 |
| 5.3 | 生命周期、优雅关闭与健康探针 | 用 lifespan 管理资源,SIGTERM 下优雅关闭并按 K8s 语义设计探针 |
| 6.1 | SQLAlchemy 2.x ORM 与类型化模型 | 用 DeclarativeBase 与 Mapped[] 定义类型化模型,改用 select() 查询 |
| 6.2 | 事务、连接池与 N+1 治理 | 讲清事务边界与连接池参数,用事件钩子统计 SQL 并对比加载策略 |
| 6.3 | Alembic 迁移与数据演进 | 从 init 到 autogenerate 生成迁移,讲清加列、回填与不可逆操作策略 |
| 7.1 | Pydantic V2 模型设计 | 用 Field 与 Annotated 约束设计请求响应模型,讲清别名与序列化取舍 |
| 7.2 | OpenAPI 契约与客户端代码生成 | 导出真实 openapi.json 解读约束映射,手写最小客户端跑通端到端 |
| 7.3 | 版本演进与向后兼容 | 分清破坏性与安全变更,用 Sunset 头渐进弃用并写契约 diff 脚本 |
| 8.1 | Redis 缓存层次与键设计 | 拆解缓存分工与键设计,实测穿透击穿雪崩对策与分布式锁 |
| 8.2 | 任务队列与重试 | 对比 Celery 与 arq,用 tenacity 实测退避重试并手写最小可靠队列 |
| 8.3 | 定时任务、幂等与死信处理 | 讲 ZSET 延时调度与幂等键设计,给出死信重放流程与告警口径 |
| 9.1 | 认证与会话:JWT / OAuth2 | 手写 HS256 JWT 签发与校验,讲透常见坑并梳理 OAuth2 授权码与 PKCE |
| 9.2 | 权限模型与多租户隔离 | 对比 ACL/RBAC/ABAC,实现 RBAC 并讲三种多租户隔离与越权测试 |
| 9.3 | 输入校验、依赖供应链与漏洞加固 | 用 Pydantic 与 pathlib 挡不可信输入,讲供应链威胁与加固清单 |
| 10.1 | WebSocket 与消息协议 | 真跑握手与帧格式,用 FastAPI websocket 并设计带版本协商的消息信封 |
| 10.2 | SSE 与流式响应 | 真跑 text/event-stream 字段与流式输出,给 SSE 与 WebSocket 选型对照 |
| 10.3 | 心跳、重连与广播 | 用心跳剔除假死连接、退避加抖动重连,用 ConnectionManager 广播做背压 |
第三部分 数据与自动化(第 11–14 章)
这一部分离开常驻服务,处理「一次性、批量、按计划跑」的工程:数据处理、采集、办公自动化与命令行工具,读完能把重复劳动交给脚本并让它长期稳定运行。
四个章节对应四类典型任务:第 11 章用 pandas 与 Polars 处理结构化数据并编排 ETL,第 12 章做网络采集并守住合规边界,第 13 章把文件与办公文档的批量操作自动化,第 14 章把能力封装成可分发、可测试的命令行工具乃至桌面程序。
| 编号 | 章节 | 说明 |
|---|---|---|
| 11.1 | pandas 数据处理与性能陷阱 | 用 50 万行数据实测 Copy-on-Write、dtype 内存与向量化差距 |
| 11.2 | Polars 与大规模数据 | 用同一份数据实测 LazyFrame 惰性求值、下推与流式引擎并对比耗时 |
| 11.3 | 数据管道与 ETL 编排 | 讲幂等的三种手段,手写带拓扑排序的 DAG 调度器并用 Parquet 落盘 |
| 12.1 | HTTP 客户端与页面解析 | 对比 requests 与 httpx 取舍,用本地假站点跑通 BeautifulSoup 与 lxml |
| 12.2 | 动态页面与浏览器自动化 | 跑通 JS 渲染页看清静态解析边界,给内嵌 JSON 与底层 API 替代路线 |
| 12.3 | 稳定性、限速与合规边界 | 用 robotparser 解析 robots,真跑令牌桶限速与断点续采并收束合规清单 |
| 13.1 | 文件批处理与目录治理 | 用 pathlib 与 hashlib 真跑批量重命名与去重,讲先干跑再执行的纪律 |
| 13.2 | Excel / Word / PDF 自动化 | 用 openpyxl、python-docx、pypdf 真跑读写生成与文本提取,附公式坑 |
| 13.3 | 定时任务与系统集成 | 讲 cron 与 systemd timer 写法,用文件锁真跑防重入并做幂等 |
| 14.1 | Click / Typer 构建 CLI | 用 Click 声明命令组,再用 Typer 重写并用 CliRunner 测透 CLI 层 |
| 14.2 | 分发 CLI:zipapp 与打包 | 讲 console_scripts 入口点,用 zipapp 真打包真运行并踩过包根陷阱 |
| 14.3 | 桌面 GUI 快速实现 | 讲 Tkinter 布局与事件循环、PySide6 信号槽,用假视图把控制器测通 |
第四部分 交付与运行(第 15–18 章)
这一部分把前三个部分的成果真正交出去并跑起来:容器化、部署、性能、可观测性与一次完整的综合实战,读完能独立完成一个生产级服务的上线与运维。
第 15 章解决「怎么装进容器并部署到云」,第 16 章解决「怎么让它快且稳」,第 17 章解决「出问题时怎么看得见、回得去」,第 18 章用一个贯穿三节的真实项目 TaskFlow 把全书串起来——从需求拆解、迭代开发到上线复盘,走完一遍完整交付流程。
| 编号 | 章节 | 说明 |
|---|---|---|
| 15.1 | 多阶段 Dockerfile 与镜像瘦身 | 从 1.67GB 讲到 259MB,实测多阶段构建、层缓存与非 root 用户 |
| 15.2 | 应用服务器进程模型与调优 | 真跑 uvicorn 多 worker 并发实测,讲 gunicorn 与 UvicornWorker 模型 |
| 15.3 | 云平台部署与 Serverless | 对比容器、PaaS、FaaS 三形态,实测环境变量注入与冷启动导入耗时 |
| 16.1 | 剖析方法论 | 用 cProfile 与 pyinstrument 读调用树,把先测量再优化立成纪律 |
| 16.2 | CPU·内存·I/O 三类瓶颈的定位与优化 | 用向量化、tracemalloc 与异步批量分别击破三类瓶颈并给决策表 |
| 16.3 | 压测、容量评估与限流降级 | 自写压测器打出 QPS 与延迟分位,讲容量曲线并真跑限流与降级 |
| 17.1 | OpenTelemetry 追踪 | 用 otel-api 与 sdk 真跑嵌套 span 与跨服务传播,贴出 FastAPI 埋点 |
| 17.2 | 日志聚合与告警 | 真跑采集到告警链路,把日志统一成 JSON 并带 trace_id 写告警规则 |
| 17.3 | 灰度发布、回滚与故障演练 | 实测稳定哈希分流与准入判定,讲不可变 tag 回滚与 expand-contract |
| 18.1 | 需求拆解与架构设计 | 从 TaskFlow 出发拆需求、画领域模型、固化 API 契约并跑通首版迁移 |
| 18.2 | 迭代开发、联调与压测 | 把 TaskFlow 真写出来,pytest 跑出 11 例通过、86% 覆盖率并联调压测 |
| 18.3 | 上线、复盘与后续演进 | 用上线清单逐项落地,真跑迁移回滚,复盘四个坑并给演进路线 |
两条阅读路径建议
本书可以按顺序通读,也可以按角色跳读。下面给出两条典型路径,其余组合可以按前面的依赖表自行裁剪。
两条路径并不互斥:你也可以先按角色跳读完一条支线,再回头把剩下的部分补齐。关键在于每读一节都动手,把示例在自己的环境里跑一遍——工程能力是做出来的,不是读出来的。
路径一:按顺序通读(推荐给第一次做完整项目的人)。 从 1.1 一路读到 18.3,每章动手把示例跑一遍。这条路线的价值在于它模拟了真实项目的推进顺序:先搭地基,再写服务,然后处理数据,最后上线。你会经历一次「从空目录到上线」的完整闭环,这正是本书最重要的产出。预计投入 6–8 周,每天 1 小时。
路径二:按角色跳读(推荐给已有明确方向的从业者)。 先读第一部分全部 12 节,建立共同的工程底座,然后按方向选一条支线:后端方向读第二、四部分(第 5–10 章 + 第 15–18 章),数据与自动化方向读第三部分加第 15、16 章。跳读时请留意每章开头交代的前置依赖,以及各节末尾「衔接下一节」那句话——它往往点明本节产出的东西被谁消费。
无论选哪条路径,第 18 章的综合实战都建议放在最后完整走一遍。它把前面 17 章的知识收拢到一个真实项目 TaskFlow 上,从需求到上线复盘一路推到底,是检验「是否真的能独立交付」的最好方式。
常见问题速查
下面是实战中常遇到的「该读哪一节」的问题,直接给答案:
| 你的问题 | 去哪一节 |
|---|---|
| 项目一变大就不知道文件该怎么放 | 1.1、5.1 |
| 别人的环境装不上、装出来版本不一样 | 2.1、2.2 |
| 本地能跑、CI 挂掉 | 2.3、4.3 |
| 配置写死在代码里、多环境切不过来 | 3.1 |
| 线上出问题只有一行行文本日志 | 3.2、3.3、17.2 |
| 测试写了不少,但重构时不敢改 | 4.1、4.3 |
| 接口一改客户端就崩 | 7.3 |
| 某个接口偶尔很慢,查不出慢在哪 | 6.2、16.1、17.1 |
| 缓存和数据库的数据对不上 | 8.1、8.3 |
| 定时任务重复执行、跑了两遍 | 8.3、13.3 |
| 用户能改到别人家的数据 | 9.2 |
| 镜像好几个 G,部署很慢 | 15.1 |
| 并发一上来服务就雪崩 | 15.2、16.3 |
| 数据库表结构变更不敢上线 | 6.3、17.3 |
如果你遇到的问题不在表里,可以先用目录里的关键词搜索定位章节,再结合每节的「本节目标」判断是否命中。
延伸阅读
本书讲的是「一条工程路径」,站内 Python 专题则是「单点深挖」。两者是互补关系:本书负责按顺序把能力串起来,专题负责就一个问题钻到底。几组高相关的组合:
- 工具链与依赖:Python 现代工具链
- 测试与质量:Python 测试
- Web 与架构:Python Web 框架 、Python 微服务架构
- 数据与 ETL:Python 数据分析 、Python 数据工程 ETL
- 性能与内存:Python 并发与性能 、Python 内存管理与性能调优
需要更长的学习路线,可以回到入门卷的 《Python编程入门》目录 对照阅读。
读完本书之后
读完全书并不意味着结束。工程能力是一门要在项目里持续打磨的手艺,真正让它固化的,是你把它用在自己的代码上。给几条后续建议:
- 找一个真实需求练手。哪怕只是一个内部小工具或一个 API 服务,把它按本书的顺序完整走一遍:脚手架、依赖、配置、测试、分层、部署。走通一次闭环,收益远大于再读一遍书。
- 读一读你依赖的库的源码。FastAPI、SQLAlchemy、pydantic 的实现本身就是工程取舍的范本,对照你在第 5、6、7 章学到的分层与契约思路去读,会有新的收获。
- 把「先测量再优化」变成习惯。第 16 章反复强调的纪律,是区分「凭感觉优化」与「有依据优化」的分水岭,值得带进每一个项目。
- 保持对复杂度的警惕。能用一个服务解决的事不要拆成三个,能不加的依赖不要加;可维护性永远优先于技巧。
小结
这一页的核心信息可以浓缩成三句话:
- 定位上,本卷是 Python 三卷体系的中间卷,把入门卷的「会写」升级为「会交付」,重点从语言特性整体搬到工程决策与取舍。
- 结构上,全书是「四部分 18 章 54 节 + 本目录篇」,按工程推进顺序组织,第一部分是绕不过去的地基,其余部分可按方向取舍。
- 路径上,第一次做完整项目建议顺序通读,已有方向可按角色跳读,但第 18 章的综合实战都值得最后完整走一遍。
如果你已经选好了路径,可以直接从对应的章节开始。每一节末尾都会指向下一节,跟着走不会迷路。
祝你交付顺利。
继续阅读
探索更多技术文章
浏览归档,发现更多关于系统设计、工具链和工程实践的内容。