关于这本书
这是一本写给「想真正学会 Python」的人的书,而不是一本写给「想在面试前背几个概念」的人的书。全书共 18 章 54 节,另加序、前言、目录三篇前置内容与附录 A 到 D 四篇,合计 61 篇。它假定你愿意动手写代码、愿意在报错信息里泡一会儿、愿意花时间想清楚「为什么这样设计」,而不是只想知道「这样写能不能过」。
在正文开始之前,这一篇把体例讲清楚:这本书写给谁、怎么组织、代码按什么约定写、不同的人应该怎么读。读完它,你就能判断该从哪一页开始,以及哪些部分可以放心跳过。
目标读者与前置知识
最低前置知识:能使用命令行,知道文件与目录的概念。Python 语法本身不要求任何基础,本书从零讲起。具体来说,你最好已经具备:
- 能在终端(Windows 上是 PowerShell 或 cmd)里切换目录、执行命令;
- 知道「文件」「文件夹」「路径」指的是什么;
- 能读懂最基础的英文报错信息里的关键词,比如
line、file、expected。
如果你完全不会编程,这本书就是为你写的。它不会预设你懂任何语言,唯一的建议是按顺序读、每节动手敲,不要跳章。Python 的知识结构是层层叠加的——不理解列表与字典,就读不懂推导式;不理解可迭代协议,就读不懂生成器与异步。
如果你有其他语言的经验(Java、C#、Go、Rust、JavaScript 等),你可以快速扫过第 3、4 章,但请留意三处与静态语言差别最大的地方:变量是「名字绑定到对象」而非「内存盒子」(3.3 节)、函数是一等公民且默认参数在定义时求值一次(4.2、4.3 节)、缩进是语法而不是格式(1.1 节)。这三处是静态语言背景的人最容易别扭的地方。
如果你已经会写 Python,但没系统学过,重点放在第二部分(第 5–9 章)与第三部分(第 10–13 章)。你可能凭经验知道结论,但不知道机制,而机制正是复杂项目里卡壳的根源。
全书结构:四部分 18 章
全书按学习曲线分为四个部分,每一部分解决一类问题:
| 部分 | 章节 | 主题 | 解决的问题 |
|---|---|---|---|
| 第一部分 | 第 1–4 章 | 语言基础 | 这门语言是什么、怎么装、怎么写第一行代码 |
| 第二部分 | 第 5–9 章 | 语言核心机制 | 模块、类、异常、迭代器与类型系统如何协作 |
| 第三部分 | 第 10–13 章 | 标准库精要 | 文本、文件、时间、日志、并发与异步怎么用 |
| 第四部分 | 第 14–18 章 | 工程与交付 | 测试、打包、Web 开发与真实项目怎么落地 |
每一部分的内部也是递进的。以第二部分为例:第 5 章先建立「模块与包」的组织方式,第 6 章把数据升级为类与对象,第 7 章引入异常与上下文管理器,第 8 章讲清迭代协议与装饰器,第 9 章才落到类型注解——这一顺序不是随意的,没有前面的对象模型,类型系统就无从谈起。
每一节的组织方式
为了让 54 节保持一致的节奏,正文的每一节都按同样的五段式组织:
- 本节目标:开头用一小段话说明这一节要解决什么问题、读完之后你能做什么,并标注适用版本。
- 正文小节:主体内容,以
## X.Y为节标题,其下再用### X.Y.n细分。每个小节聚焦一个具体问题,尽量给出可运行的代码与真实输出。 - 小结:末尾用几句话收束,点明这一节最值得记住的判断标准,而不是复述正文。
- 衔接下一节:用一句话指向下一节,说明接下来要解决的问题与本节的关系。
- 阅读导航:正文末尾一行给出「上一节 / 下一节」的链接,方便顺序阅读。
也就是说,每一节的开头都长这样:
本节目标:……(这一节要解决的问题)
适用版本:Python 3.12+(实测 3.14.6)
这种结构的代价是每节都有一些重复的仪式感,好处是你随时可以抽出一节独立阅读,而不必担心缺少上下文。当作参考手册用时,这一点会尤其方便。
需要说明的是,本页(前言)以及序、目录和四篇附录并不遵循上面的五段式——它们不是「一节正文」,因此没有开头的目标引用块,也没有末尾的阅读导航行,而是以正常的段落收尾。这一点在你翻到附录时不必觉得奇怪。
版本口径
这是全书唯一集中交代版本的地方,请留意它,因为后面每一节都会默认你已经知道这些口径。
- 本书所有代码在 Python 3.14.6(2026-06 构建)上实测,示例输出为真实结果,不是凭记忆写下的。
- 本书基线是
requires-python = ">=3.12"。也就是说,凡是不特别标注的代码,都保证在 3.12 及以上可以运行。 - 写作时 3.14 线最新补丁是 3.14.8,本机为 3.14.6。同一条版本线(3.14.x)内的补丁差异不影响本书的任何结论——补丁版本只修 bug,不改语言语义。
- Python 3.15 截至写作时仍为
3.15.0rc3候选版,尚未正式发布。因此书中凡提到 3.15 的地方,一律标注为「计划 / 预览」,不当成既成事实。
各版本已实测可用的关键特性如下表,供你在自己环境里对照:
| 版本 | 已实测可用 |
|---|---|
| 3.10 | match 语句、X | Y 联合类型注解 |
| 3.11 | ExceptionGroup / except*、asyncio.TaskGroup、asyncio.timeout、tomllib |
| 3.12 | PEP 695 泛型语法(type X = ...、class C[T]:)、itertools.batched、pathlib.Path.walk |
| 3.13 | 自由线程构建(实验性)、改进的交互式 REPL、copy.replace |
| 3.14 | 注解延迟求值(PEP 649/749)、模板字符串 t"..."(PEP 750)、标准库 compression.zstd(PEP 784) |
在代码里判断版本,用 sys.version_info 而不是字符串比较:
import sys
print(sys.version_info[:3])
if sys.version_info >= (3, 12):
print("可以用 PEP 695 泛型语法")
(3, 14, 6)
可以用 PEP 695 泛型语法
代码约定
为了让你复制出来的代码能直接跑,本书在代码上有几条统一约定:
- 代码块都标语言:
python表示 Python 代码,text表示真实输出或报错原文,bash表示命令行,toml/json/ini表示配置。 - 第三方库固定版本号:涉及第三方库时,书中给出实测的版本号(来自 PyPI),避免你因为版本漂移得到不同结果。
- 输出与代码分离:Python 代码块之后,紧跟着的
text代码块是这段代码在本机跑出的真实输出,不是示意。 - 未能跑通的片段会显式说明:个别示例依赖你本机没有的环境(比如需要外部服务、需要特定操作系统),这类片段会在正文里写明原因,而不是假装它跑通了。
- 省略处会标注:为了聚焦重点而省略与主题无关的部分时,会用
...或注释标明。
下面是一个符合上述约定的最小示例,你可以用它验证环境是否配置正确:
def greet(name: str, times: int = 1) -> str:
return f"Hello, {name}!" * times
print(greet("Python", 2))
Hello, Python!Hello, Python!
环境约定
推荐 3.12 及以上版本,因为本书大量使用 3.10 起的 X | Y 类型写法与 3.12 起的 PEP 695 泛型语法。如果你的系统自带版本较老,建议装一个较新的稳定版,并始终在虚拟环境里工作,避免污染系统环境。
编辑器的选择不强制,但推荐能提供类型提示与运行配置的现代编辑器(VS Code、PyCharm 等)。具体怎么装 Python、怎么建虚拟环境、怎么配编辑器、怎么写第一个脚本,2.1 安装 Python 与虚拟环境 、2.2 编辑器、REPL 与第一个脚本 与 2.3 项目结构与 pyproject.toml 初探 三节会把这一步走完。建议第一次就把环境配好,因为后面每一节的示例都依赖它。
排版约定
为了让正文更易读,本书在排版上有几条固定的约定:
| 约定 | 含义 |
|---|---|
「」 | 术语强调或口语化引用,例如「可迭代对象」「鸭子类型」 |
> 引用块 | 只出现在正文节开头,用来声明「本节目标」与「适用版本」 |
| 表格 | 用于对比、速查与取舍分析;表格里往往信息密度最高 |
text 代码块 | 紧跟 Python 代码块,内容是真实运行输出或报错原文 |
| 粗体 | 强调一句话里最关键的那半句,而不是用来好看 |
学习时间估算
为了让「按需跳读」这条路径可执行,这里给出一份粗略的时间参考(按每天投入一小时计):
- 第 1–4 章(语言基础):约 1.5 周。内容不深,但环境配置与对象模型需要一点消化的时间。
- 第 5–9 章(语言核心机制):约 3 周。这是全书最重要也最需要慢下来的部分。
- 第 10–13 章(标准库精要):约 2.5 周。可以结合手上的脚本同步实践。
- 第 14–18 章(工程与交付):约 3 周。更适合在有真实项目时精读。
总计约 9 到 10 周可以完成一遍系统学习。如果你的目标是「两周内能上手写脚本」,那么集中读第 2、3、4、10 章,跳过核心机制与工程化部分,也能获得一个可用的起点——只是后面遇到复杂问题时仍需要回来补课。
三种阅读路径
同一本书,不同的人有不同的用法。下面给出三种典型路径,你可以按自己的目标选择。
路径一:顺序通读。 适合零基础或想系统重建知识结构的人。从第 1 章开始按顺序读,每节都动手写代码,遇到不懂的标记下来继续读,读完一整章后回头解决标记的问题。预计需要 9 到 10 周。这条路径的收益最完整,但需要耐心。
路径二:快速上手。 适合有其他语言经验、只想尽快能干活的人。可以跳过第 1 章的 1.1、1.3 与第 3、4 章的大部分,直接读第 2 章(环境)、第 5 章(模块)、第 6 章(类)、第 10 章(文件与文本)与第 14 章(测试)。大约 3 周可以写出结构清晰的脚本。第三部分的并发与异步(第 12、13 章)值得单独抽时间读,它们解决的问题与语法无关,但对程序的正确性影响很大。
路径三:当参考手册用。 适合已经会写 Python、需要查具体写法的人。这种情况下不必按顺序读,直接看目录定位到相关章节,利用每节的「本节目标」和「小结」快速确认是否命中需求。附录 A 的语法速查表与附录 B 的标准库速查是为这种用法准备的,可以先从它们入手。
无论选哪条路径,都建议至少完整地动手跑通第 2 章的示例。环境配置是所有后续内容的地基,地基不稳,后面每一步都会变得别扭。
关于练习与验证
这本书没有独立的习题册,但每一节的示例本身就是练习。推荐的做法是:先看问题描述,自己尝试写一遍,再看书里的写法。编程的学习高度依赖「预判—验证」的循环——你先在脑子里推断某段代码会输出什么、会不会报错,然后让解释器告诉你答案。这个循环跑得越多,你对语言行为的直觉就越准。
如果你在某个示例上卡住了,最有效的办法往往不是重读正文,而是故意把代码改坏,看看解释器会报什么。错误信息本身携带了大量信息:它告诉你哪一行、什么类型、期望的是什么。学会读报错,是这本书希望帮你建立的一项独立能力,附录 D 也专门汇总了高频报错的排查思路。
关于配套资源
本书不附带独立的代码仓库,原因很简单:示例足够短,短到你直接复制进编辑器就能用。与其维护一份可能随时间腐坏的仓库,不如让每一段代码都保持「自包含、可复制、可运行」的状态。
真正值得你准备的配套环境只有两样:一个装好 Python 3.12 以上版本的本机环境,以及一个带 Python 支持的编辑器。附录部分承担了「速查」的角色——附录 A 汇总语法,附录 B 汇总标准库模块,附录 C 汇总第三方库与资源,附录 D 汇总常见错误与困惑。它们不按教学顺序组织,而是按查阅顺序组织,适合在你写代码卡住时随手翻。
关于怎么判断自己真的学会了
学完一章之后,怎么知道自己是真懂了还是「读懂了」?这个问题比它看起来更重要,因为编程特别容易制造「我明白了」的错觉——看着别人写好的代码,每一步都合理,合上书却写不出来。
下面这份清单可以用来自查。每一项都对应一种可以被观察的行为,而不是一种感觉:
- 看到一个需求,能先想清楚数据结构,再动手写。 而不是先写一堆临时变量,最后再回头整理。
- 能预判一段代码的输出。 在按下回车之前,你心里已经知道它会打印什么。
- 能读懂报错的意图,而不是它的字面。 看到
TypeError,你能说出是哪个对象的类型不对、为什么不对。 - 知道什么时候不该用某个特性。 能判断某处写推导式是收益,还是纯粹的炫技。
- 能读懂标准库源码。 打开一个模块的实现,你能大致跟上它的思路。
- 能解释自己为什么这样写。 面对「为什么这里用生成器而不是列表」,你给得出理由,而不是「书上是这么写的」。
反过来,下面这些信号说明你可能还停在「读过」的阶段:一遇到报错就上网搜现成答案;能看懂书里的例子但自己写不出来;分不清「程序能跑」和「结果正确」的区别;写完逻辑之后才回头补类型注解和测试。
如果你发现自己中了几条,不必沮丧。编程能力本来就是靠「写—错—改」的循环长出来的,回到对应章节,把示例亲手敲一遍,往往比再读一遍有效。真正的分水岭不在「知道有这个特性」,而在「遇到问题时能想起它」。
勘误与反馈
技术书难免有疏漏,尤其是涉及版本演进的细节。如果你在阅读中发现示例无法运行、表述有歧义,或者某个知识点讲得不够清楚,欢迎在站点相应页面留言指出。对于确认的问题,我会在后续修订中更新正文,并在页面的更新说明里标注。
需要说明的是,本书面向的是「长期有效的判断力」,而不是「某个月份的 API 清单」。语言在演进,具体的库名、配置项、默认行为都可能过时;但对象模型、导入机制、并发模型这些内容,保质期要长得多。如果某一天你发现书里的某个工具已经被取代,但其中的思路仍然有用,那这本书就达到了它想要的效果。
现在,让我们从第 1 章开始。先回答那个最朴素的问题:Python 到底是怎么来的,它想解决什么。
继续阅读
探索更多技术文章
浏览归档,发现更多关于系统设计、工具链和工程实践的内容。