作者: andylin02
学习章节: 全书总结与附录
关键词: 全书回顾|Pythonic|数据模型|一等函数|面向对象|并发|元编程|附录|学习路线
一、全书概览
《流畅的 Python》由巴西专家 Luciano Ramalho 撰写,是 Python 进阶的经典著作。第二版(2023 年出版)基于 Python 3.10/3.11,覆盖了从数据模型到元编程的完整知识体系。全书分为五大部分:
| 第一部分:数据结构 | 1–4 | Python 数据模型、序列、字典集合、文本与字节 |
| 第二部分:函数作为对象 | 5–10 | 一等函数、类型提示、装饰器、闭包、设计模式简化 |
| 第三部分:类和协议 | 11–15 | 对象表示、序列修改、接口与 ABC、继承、运算符重载 |
| 第四部分:控制流程 | 16–18 | 迭代器、生成器、yield from、协程 |
| 第五部分:元编程 | 19–24 | 并发模型、执行器、异步编程、动态属性、描述符、类元编程 |
全书旨在帮助开发者写出地道、高效、可维护的 Python 代码。
二、分部分核心知识点总结
第一部分:数据结构(第 1–4 章)
| 1. Python 数据模型 | 特殊方法(__len__, __getitem__ 等) | FrenchDeck 示例 |
| 2. 丰富的序列 | 列表推导、生成器表达式、切片、bisect、array、deque | * 与 += 的陷阱 |
| 3. 字典和集合 | 可散列对象、defaultdict、Counter、ChainMap、散列表原理 | 散列冲突与紧凑哈希表 |
| 4. 文本和字节序列 | Unicode 编码/解码、bytes/bytearray、memoryview、规范化 | 编码错误处理、Unicode 三明治 |
第二部分:函数作为对象(第 5–10 章)
| 5. 数据类构建器 | namedtuple、typing.NamedTuple、@dataclass | field(default_factory) |
| 6. 对象引用、可变性和垃圾回收 | 变量是标签、浅/深复制、weakref、引用计数 | 可变默认参数陷阱 |
| 7. 函数是一等对象 | 高阶函数、map/filter/reduce、lambda、函数内省 | operator 模块 |
| 8. 函数中的类型提示 | Union、Optional、TypeVar、Protocol、overload | 渐进式类型 |
| 9. 装饰器和闭包 | 闭包、nonlocal、functools.wraps、lru_cache | 参数化装饰器 |
| 10. 使用一等函数实现设计模式 | 策略模式函数化、命令模式与 partial | 注册装饰器 |
第三部分:类和协议(第 11–15 章)
| 11. 符合 Python 风格的对象 | __repr__、__hash__、@property、__slots__ | Vector 类完整实现 |
| 12. 序列的修改、散列和切片 | 序列协议、切片原理、__getattr__、__setattr__ | 可散列 Vector |
| 13. 接口:从协议到抽象基类 | 动态协议、abc.ABC、__subclasshook__、白鹅类型 | 虚拟子类注册 |
| 14. 继承:利弊 | 内置类型子类化陷阱、UserDict、MRO(C3 算法)、Mixin | 菱形问题 |
| 15. 运算符重载 | 一元/二元运算符、反向方法、NotImplemented、增量赋值 | Vector 运算重载 |
第四部分:控制流程(第 16–18 章)
| 16. 迭代器、生成器和经典协程 | 迭代器协议、生成器函数、itertools、协程的 .send() | 预激装饰器 |
| 17. 使用 yield from | 双向通道、委托生成器、子生成器返回值 | 计算平均值协程 |
| 18. 并发模型 | 线程 vs 进程 vs asyncio、GIL 分析、调度原理 | spinner 示例 |
第五部分:元编程(第 19–24 章)
| 19. 并发执行器 | ThreadPoolExecutor、ProcessPoolExecutor、Future | 国旗下载 |
| 20. 异步编程 | async/await、事件循环、asyncio.gather、HTTPX | 高并发请求 |
| 21. 动态属性和特性 | __getattr__、@property、__new__、__slots__ | FrozenJSON |
| 22. 属性描述符 | 描述符协议、数据描述符 vs 非数据描述符、__set_name__ | Quantity 验证 |
| 23. 类元编程 | 元类、__init_subclass__、类装饰器、__prepare__ | ORM 简化、单例 |
三、全书学习路线图
#mermaid-svg-LEldCVDYgkXIFWEa{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-LEldCVDYgkXIFWEa .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-LEldCVDYgkXIFWEa .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-LEldCVDYgkXIFWEa .error-icon{fill:#552222;}#mermaid-svg-LEldCVDYgkXIFWEa .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-LEldCVDYgkXIFWEa .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-LEldCVDYgkXIFWEa .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-LEldCVDYgkXIFWEa .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-LEldCVDYgkXIFWEa .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-LEldCVDYgkXIFWEa .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-LEldCVDYgkXIFWEa .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-LEldCVDYgkXIFWEa .marker{fill:#333333;stroke:#333333;}#mermaid-svg-LEldCVDYgkXIFWEa .marker.cross{stroke:#333333;}#mermaid-svg-LEldCVDYgkXIFWEa svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-LEldCVDYgkXIFWEa p{margin:0;}#mermaid-svg-LEldCVDYgkXIFWEa .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-LEldCVDYgkXIFWEa .cluster-label text{fill:#333;}#mermaid-svg-LEldCVDYgkXIFWEa .cluster-label span{color:#333;}#mermaid-svg-LEldCVDYgkXIFWEa .cluster-label span p{background-color:transparent;}#mermaid-svg-LEldCVDYgkXIFWEa .label text,#mermaid-svg-LEldCVDYgkXIFWEa span{fill:#333;color:#333;}#mermaid-svg-LEldCVDYgkXIFWEa .node rect,#mermaid-svg-LEldCVDYgkXIFWEa .node circle,#mermaid-svg-LEldCVDYgkXIFWEa .node ellipse,#mermaid-svg-LEldCVDYgkXIFWEa .node polygon,#mermaid-svg-LEldCVDYgkXIFWEa .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-LEldCVDYgkXIFWEa .rough-node .label text,#mermaid-svg-LEldCVDYgkXIFWEa .node .label text,#mermaid-svg-LEldCVDYgkXIFWEa .image-shape .label,#mermaid-svg-LEldCVDYgkXIFWEa .icon-shape .label{text-anchor:middle;}#mermaid-svg-LEldCVDYgkXIFWEa .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-LEldCVDYgkXIFWEa .rough-node .label,#mermaid-svg-LEldCVDYgkXIFWEa .node .label,#mermaid-svg-LEldCVDYgkXIFWEa .image-shape .label,#mermaid-svg-LEldCVDYgkXIFWEa .icon-shape .label{text-align:center;}#mermaid-svg-LEldCVDYgkXIFWEa .node.clickable{cursor:pointer;}#mermaid-svg-LEldCVDYgkXIFWEa .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-LEldCVDYgkXIFWEa .arrowheadPath{fill:#333333;}#mermaid-svg-LEldCVDYgkXIFWEa .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-LEldCVDYgkXIFWEa .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-LEldCVDYgkXIFWEa .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-LEldCVDYgkXIFWEa .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-LEldCVDYgkXIFWEa .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-LEldCVDYgkXIFWEa .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-LEldCVDYgkXIFWEa .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-LEldCVDYgkXIFWEa .cluster text{fill:#333;}#mermaid-svg-LEldCVDYgkXIFWEa .cluster span{color:#333;}#mermaid-svg-LEldCVDYgkXIFWEa div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-LEldCVDYgkXIFWEa .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-LEldCVDYgkXIFWEa rect.text{fill:none;stroke-width:0;}#mermaid-svg-LEldCVDYgkXIFWEa .icon-shape,#mermaid-svg-LEldCVDYgkXIFWEa .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-LEldCVDYgkXIFWEa .icon-shape p,#mermaid-svg-LEldCVDYgkXIFWEa .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-LEldCVDYgkXIFWEa .icon-shape .label rect,#mermaid-svg-LEldCVDYgkXIFWEa .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-LEldCVDYgkXIFWEa .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-LEldCVDYgkXIFWEa .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-LEldCVDYgkXIFWEa :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}
第五部分 元编程
第19章 执行器
第20章 异步编程
第21章 动态属性
第22章 描述符
第23章 类元编程
第四部分 控制流
第16章 迭代器生成器
第17章 yield from
第18章 并发模型
第三部分 OOP 进阶
第11章 Python风格对象
第12章 序列切片
第13章 接口ABC
第14章 继承
第15章 运算符重载
第二部分 函数式编程
第5章 数据类
第6章 引用
第7章 一等函数
第8章 类型提示
第9章 装饰器
第10章 设计模式
第一部分 数据结构
第1章 数据模型
第2章 序列
第3章 字典集合
第4章 文本字节
四、全书核心代码片段集锦
以下代码摘录自各章最具代表性的示例,浓缩了本书的精髓。
4.1 数据模型:FrenchDeck(第1章)
import collections
from random import choice
Card = collections.namedtuple('Card', ['rank', 'suit'])
class FrenchDeck:
ranks = [str(n) for n in range(2, 11)] + list('JQKA')
suits = 'spades diamonds clubs hearts'.split()
def __init__(self):
self._cards = [Card(rank, suit) for suit in self.suits
for rank in self.ranks]
def __len__(self):
return len(self._cards)
def __getitem__(self, position):
return self._cards[position]
# 使用
deck = FrenchDeck()
print(len(deck)) # 52
print(choice(deck)) # 随机牌
4.2 生成器表达式与列表推导(第2章)
# 生成器表达式节省内存
symbols = '$¢£¥€¤'
unique_codes = {ord(c) for c in symbols} # 集合推导
even_ascii = [ord(c) for c in symbols if ord(c) % 2 == 0]
4.3 装饰器与闭包(第9章)
import functools
import time
def clock(func):
@functools.wraps(func)
def clocked(*args, **kwargs):
t0 = time.perf_counter()
result = func(*args, **kwargs)
elapsed = time.perf_counter() – t0
print(f'[{elapsed:0.8f}s] {func.__name__}{args} -> {result!r}')
return result
return clocked
@clock
def factorial(n):
return 1 if n < 2 else n * factorial(n–1)
factorial(5)
4.4 数据类与 slots(第5章、第11章)
from dataclasses import dataclass, field
@dataclass(slots=True) # Python 3.10+ 自动启用 __slots__
class InventoryItem:
name: str
unit_price: float
quantity: int = 0
def total_cost(self) –> float:
return self.unit_price * self.quantity
4.5 asyncio 高并发 HTTP 请求(第20章)
import asyncio
import httpx
async def fetch(session, url):
async with session.get(url) as resp:
return await resp.text()
async def main():
urls = ["https://www.python.org", "https://www.github.com"]
async with httpx.AsyncClient() as session:
tasks = [asyncio.create_task(fetch(session, url)) for url in urls]
results = await asyncio.gather(*tasks)
print(results)
asyncio.run(main())
4.6 描述符实现数据验证(第22章)
class PositiveNumber:
def __set_name__(self, owner, name):
self.storage = f'_{name}'
def __get__(self, instance, owner):
if instance is None:
return self
return getattr(instance, self.storage, None)
def __set__(self, instance, value):
if value <= 0:
raise ValueError("Value must be positive")
setattr(instance, self.storage, value)
class Order:
weight = PositiveNumber()
price = PositiveNumber()
def __init__(self, weight, price):
self.weight = weight
self.price = price
order = Order(2.5, 100.0)
print(order.weight) # 2.5
# order.weight = -1 # ValueError
五、附录内容简介
《流畅的 Python》第二版附录主要包括:
- 附录 A「辅助脚本」:书中示例用到的支持代码,例如:
- flags2_common.py:国旗下载的公共基础设施(解析参数、进度条等)
- spinner_*.py:并发 spinner 的线程、进程、异步版本
- charfinder.py:查找 Unicode 字符的交互式工具
- 附录 B「参考文献」:按主题分类的书目和在线资源推荐,包括:
- Python 官方文档与 PEP
- 进阶书籍(如《Python Cookbook》、《Effective Python》)
- 异步编程、类型提示、设计模式等专题文章
附录不是教程,而是实践的工具箱和延伸阅读指南,读者可按需查阅。
六、全书学习心得与关键收获
通读《流畅的 Python》后,核心收获可以归纳为以下维度:
Python 数据模型是根本:理解特殊方法,才能写出与 Python 内置类型无缝协作的类。len() 不是 .len() 的设计哲学贯穿全书。
函数是一等对象:高阶函数、闭包、装饰器是函数式编程和元编程的基础。学会用 functools.partial 和 operator 模块简化代码。
类型提示与渐进式类型:从 Python 3.5 起,类型提示大幅提升了大型项目的可维护性。Protocol 和 @overload 让静态类型检查更灵活。
继承要谨慎:内置类型子类化有陷阱,优先使用 UserDict/UserList;多重继承时 MRO 是关键;Mixin 是优秀的组合模式。
并发与异步:concurrent.futures 封装了线程池/进程池的复杂细节;asyncio 是 I/O 密集型高并发的未来。理解 GIL 才能正确选择模型。
元编程最终武器:描述符和元类虽晦涩,但却是框架开发者(Django、SQLAlchemy)的必备技能,普通应用开发应优先选择 __init_subclass__ 或类装饰器。
正如作者在序言中所说:本书不是一次简单的语法浏览,而是一次对 Python 设计哲学的深入探索。
七、后续学习建议
完成《流畅的 Python》后,你已经具备了中高级 Python 开发者的理论功底。下一步可以:
| 官方文档 | Python 官方教程、标准库参考、PEP 索引 |
| 异步编程深化 | 《Using Asyncio in Python》、Real Python 的 asyncio 系列 |
| 性能优化 | 《High Performance Python》第二版 |
| 类型系统 | mypy 文档、Pyright、PEP 484/544/585 |
| 项目实战 | 阅读 Django/ FastAPI / Pydantic 源码 |
| 认证/面试 | Python 工程师面试题、LeetCode 中高级题(用 Pythonic 方式) |
持续练习:将工作中遇到的重复模式用装饰器或描述符重构;尝试用 asyncio 重写一个爬虫;用 __slots__ 优化内存密集型对象。
八、全书结构总览(Mermaid 类图)
#mermaid-svg-sT9wUrcALrLBMFn1{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-sT9wUrcALrLBMFn1 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-sT9wUrcALrLBMFn1 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-sT9wUrcALrLBMFn1 .error-icon{fill:#552222;}#mermaid-svg-sT9wUrcALrLBMFn1 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-sT9wUrcALrLBMFn1 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-sT9wUrcALrLBMFn1 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-sT9wUrcALrLBMFn1 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-sT9wUrcALrLBMFn1 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-sT9wUrcALrLBMFn1 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-sT9wUrcALrLBMFn1 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-sT9wUrcALrLBMFn1 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-sT9wUrcALrLBMFn1 .marker.cross{stroke:#333333;}#mermaid-svg-sT9wUrcALrLBMFn1 svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-sT9wUrcALrLBMFn1 p{margin:0;}#mermaid-svg-sT9wUrcALrLBMFn1 .edge{stroke-width:3;}#mermaid-svg-sT9wUrcALrLBMFn1 .section–1 rect,#mermaid-svg-sT9wUrcALrLBMFn1 .section–1 path,#mermaid-svg-sT9wUrcALrLBMFn1 .section–1 circle,#mermaid-svg-sT9wUrcALrLBMFn1 .section–1 polygon,#mermaid-svg-sT9wUrcALrLBMFn1 .section–1 path{fill:hsl(240, 100%, 76.2745098039%);}#mermaid-svg-sT9wUrcALrLBMFn1 .section–1 text{fill:#ffffff;}#mermaid-svg-sT9wUrcALrLBMFn1 .node-icon–1{font-size:40px;color:#ffffff;}#mermaid-svg-sT9wUrcALrLBMFn1 .section-edge–1{stroke:hsl(240, 100%, 76.2745098039%);}#mermaid-svg-sT9wUrcALrLBMFn1 .edge-depth–1{stroke-width:17;}#mermaid-svg-sT9wUrcALrLBMFn1 .section–1 line{stroke:hsl(60, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-sT9wUrcALrLBMFn1 .disabled,#mermaid-svg-sT9wUrcALrLBMFn1 .disabled circle,#mermaid-svg-sT9wUrcALrLBMFn1 .disabled text{fill:lightgray;}#mermaid-svg-sT9wUrcALrLBMFn1 .disabled text{fill:#efefef;}#mermaid-svg-sT9wUrcALrLBMFn1 .section-0 rect,#mermaid-svg-sT9wUrcALrLBMFn1 .section-0 path,#mermaid-svg-sT9wUrcALrLBMFn1 .section-0 circle,#mermaid-svg-sT9wUrcALrLBMFn1 .section-0 polygon,#mermaid-svg-sT9wUrcALrLBMFn1 .section-0 path{fill:hsl(60, 100%, 73.5294117647%);}#mermaid-svg-sT9wUrcALrLBMFn1 .section-0 text{fill:black;}#mermaid-svg-sT9wUrcALrLBMFn1 .node-icon-0{font-size:40px;color:black;}#mermaid-svg-sT9wUrcALrLBMFn1 .section-edge-0{stroke:hsl(60, 100%, 73.5294117647%);}#mermaid-svg-sT9wUrcALrLBMFn1 .edge-depth-0{stroke-width:14;}#mermaid-svg-sT9wUrcALrLBMFn1 .section-0 line{stroke:hsl(240, 100%, 83.5294117647%);stroke-width:3;}#mermaid-svg-sT9wUrcALrLBMFn1 .disabled,#mermaid-svg-sT9wUrcALrLBMFn1 .disabled circle,#mermaid-svg-sT9wUrcALrLBMFn1 .disabled text{fill:lightgray;}#mermaid-svg-sT9wUrcALrLBMFn1 .disabled text{fill:#efefef;}#mermaid-svg-sT9wUrcALrLBMFn1 .section-1 rect,#mermaid-svg-sT9wUrcALrLBMFn1 .section-1 path,#mermaid-svg-sT9wUrcALrLBMFn1 .section-1 circle,#mermaid-svg-sT9wUrcALrLBMFn1 .section-1 polygon,#mermaid-svg-sT9wUrcALrLBMFn1 .section-1 path{fill:hsl(80, 100%, 76.2745098039%);}#mermaid-svg-sT9wUrcALrLBMFn1 .section-1 text{fill:black;}#mermaid-svg-sT9wUrcALrLBMFn1 .node-icon-1{font-size:40px;color:black;}#mermaid-svg-sT9wUrcALrLBMFn1 .section-edge-1{stroke:hsl(80, 100%, 76.2745098039%);}#mermaid-svg-sT9wUrcALrLBMFn1 .edge-depth-1{stroke-width:11;}#mermaid-svg-sT9wUrcALrLBMFn1 .section-1 line{stroke:hsl(260, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-sT9wUrcALrLBMFn1 .disabled,#mermaid-svg-sT9wUrcALrLBMFn1 .disabled circle,#mermaid-svg-sT9wUrcALrLBMFn1 .disabled text{fill:lightgray;}#mermaid-svg-sT9wUrcALrLBMFn1 .disabled text{fill:#efefef;}#mermaid-svg-sT9wUrcALrLBMFn1 .section-2 rect,#mermaid-svg-sT9wUrcALrLBMFn1 .section-2 path,#mermaid-svg-sT9wUrcALrLBMFn1 .section-2 circle,#mermaid-svg-sT9wUrcALrLBMFn1 .section-2 polygon,#mermaid-svg-sT9wUrcALrLBMFn1 .section-2 path{fill:hsl(270, 100%, 76.2745098039%);}#mermaid-svg-sT9wUrcALrLBMFn1 .section-2 text{fill:#ffffff;}#mermaid-svg-sT9wUrcALrLBMFn1 .node-icon-2{font-size:40px;color:#ffffff;}#mermaid-svg-sT9wUrcALrLBMFn1 .section-edge-2{stroke:hsl(270, 100%, 76.2745098039%);}#mermaid-svg-sT9wUrcALrLBMFn1 .edge-depth-2{stroke-width:8;}#mermaid-svg-sT9wUrcALrLBMFn1 .section-2 line{stroke:hsl(90, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-sT9wUrcALrLBMFn1 .disabled,#mermaid-svg-sT9wUrcALrLBMFn1 .disabled circle,#mermaid-svg-sT9wUrcALrLBMFn1 .disabled text{fill:lightgray;}#mermaid-svg-sT9wUrcALrLBMFn1 .disabled text{fill:#efefef;}#mermaid-svg-sT9wUrcALrLBMFn1 .section-3 rect,#mermaid-svg-sT9wUrcALrLBMFn1 .section-3 path,#mermaid-svg-sT9wUrcALrLBMFn1 .section-3 circle,#mermaid-svg-sT9wUrcALrLBMFn1 .section-3 polygon,#mermaid-svg-sT9wUrcALrLBMFn1 .section-3 path{fill:hsl(300, 100%, 76.2745098039%);}#mermaid-svg-sT9wUrcALrLBMFn1 .section-3 text{fill:black;}#mermaid-svg-sT9wUrcALrLBMFn1 .node-icon-3{font-size:40px;color:black;}#mermaid-svg-sT9wUrcALrLBMFn1 .section-edge-3{stroke:hsl(300, 100%, 76.2745098039%);}#mermaid-svg-sT9wUrcALrLBMFn1 .edge-depth-3{stroke-width:5;}#mermaid-svg-sT9wUrcALrLBMFn1 .section-3 line{stroke:hsl(120, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-sT9wUrcALrLBMFn1 .disabled,#mermaid-svg-sT9wUrcALrLBMFn1 .disabled circle,#mermaid-svg-sT9wUrcALrLBMFn1 .disabled text{fill:lightgray;}#mermaid-svg-sT9wUrcALrLBMFn1 .disabled text{fill:#efefef;}#mermaid-svg-sT9wUrcALrLBMFn1 .section-4 rect,#mermaid-svg-sT9wUrcALrLBMFn1 .section-4 path,#mermaid-svg-sT9wUrcALrLBMFn1 .section-4 circle,#mermaid-svg-sT9wUrcALrLBMFn1 .section-4 polygon,#mermaid-svg-sT9wUrcALrLBMFn1 .section-4 path{fill:hsl(330, 100%, 76.2745098039%);}#mermaid-svg-sT9wUrcALrLBMFn1 .section-4 text{fill:black;}#mermaid-svg-sT9wUrcALrLBMFn1 .node-icon-4{font-size:40px;color:black;}#mermaid-svg-sT9wUrcALrLBMFn1 .section-edge-4{stroke:hsl(330, 100%, 76.2745098039%);}#mermaid-svg-sT9wUrcALrLBMFn1 .edge-depth-4{stroke-width:2;}#mermaid-svg-sT9wUrcALrLBMFn1 .section-4 line{stroke:hsl(150, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-sT9wUrcALrLBMFn1 .disabled,#mermaid-svg-sT9wUrcALrLBMFn1 .disabled circle,#mermaid-svg-sT9wUrcALrLBMFn1 .disabled text{fill:lightgray;}#mermaid-svg-sT9wUrcALrLBMFn1 .disabled text{fill:#efefef;}#mermaid-svg-sT9wUrcALrLBMFn1 .section-5 rect,#mermaid-svg-sT9wUrcALrLBMFn1 .section-5 path,#mermaid-svg-sT9wUrcALrLBMFn1 .section-5 circle,#mermaid-svg-sT9wUrcALrLBMFn1 .section-5 polygon,#mermaid-svg-sT9wUrcALrLBMFn1 .section-5 path{fill:hsl(0, 100%, 76.2745098039%);}#mermaid-svg-sT9wUrcALrLBMFn1 .section-5 text{fill:black;}#mermaid-svg-sT9wUrcALrLBMFn1 .node-icon-5{font-size:40px;color:black;}#mermaid-svg-sT9wUrcALrLBMFn1 .section-edge-5{stroke:hsl(0, 100%, 76.2745098039%);}#mermaid-svg-sT9wUrcALrLBMFn1 .edge-depth-5{stroke-width:-1;}#mermaid-svg-sT9wUrcALrLBMFn1 .section-5 line{stroke:hsl(180, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-sT9wUrcALrLBMFn1 .disabled,#mermaid-svg-sT9wUrcALrLBMFn1 .disabled circle,#mermaid-svg-sT9wUrcALrLBMFn1 .disabled text{fill:lightgray;}#mermaid-svg-sT9wUrcALrLBMFn1 .disabled text{fill:#efefef;}#mermaid-svg-sT9wUrcALrLBMFn1 .section-6 rect,#mermaid-svg-sT9wUrcALrLBMFn1 .section-6 path,#mermaid-svg-sT9wUrcALrLBMFn1 .section-6 circle,#mermaid-svg-sT9wUrcALrLBMFn1 .section-6 polygon,#mermaid-svg-sT9wUrcALrLBMFn1 .section-6 path{fill:hsl(30, 100%, 76.2745098039%);}#mermaid-svg-sT9wUrcALrLBMFn1 .section-6 text{fill:black;}#mermaid-svg-sT9wUrcALrLBMFn1 .node-icon-6{font-size:40px;color:black;}#mermaid-svg-sT9wUrcALrLBMFn1 .section-edge-6{stroke:hsl(30, 100%, 76.2745098039%);}#mermaid-svg-sT9wUrcALrLBMFn1 .edge-depth-6{stroke-width:-4;}#mermaid-svg-sT9wUrcALrLBMFn1 .section-6 line{stroke:hsl(210, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-sT9wUrcALrLBMFn1 .disabled,#mermaid-svg-sT9wUrcALrLBMFn1 .disabled circle,#mermaid-svg-sT9wUrcALrLBMFn1 .disabled text{fill:lightgray;}#mermaid-svg-sT9wUrcALrLBMFn1 .disabled text{fill:#efefef;}#mermaid-svg-sT9wUrcALrLBMFn1 .section-7 rect,#mermaid-svg-sT9wUrcALrLBMFn1 .section-7 path,#mermaid-svg-sT9wUrcALrLBMFn1 .section-7 circle,#mermaid-svg-sT9wUrcALrLBMFn1 .section-7 polygon,#mermaid-svg-sT9wUrcALrLBMFn1 .section-7 path{fill:hsl(90, 100%, 76.2745098039%);}#mermaid-svg-sT9wUrcALrLBMFn1 .section-7 text{fill:black;}#mermaid-svg-sT9wUrcALrLBMFn1 .node-icon-7{font-size:40px;color:black;}#mermaid-svg-sT9wUrcALrLBMFn1 .section-edge-7{stroke:hsl(90, 100%, 76.2745098039%);}#mermaid-svg-sT9wUrcALrLBMFn1 .edge-depth-7{stroke-width:-7;}#mermaid-svg-sT9wUrcALrLBMFn1 .section-7 line{stroke:hsl(270, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-sT9wUrcALrLBMFn1 .disabled,#mermaid-svg-sT9wUrcALrLBMFn1 .disabled circle,#mermaid-svg-sT9wUrcALrLBMFn1 .disabled text{fill:lightgray;}#mermaid-svg-sT9wUrcALrLBMFn1 .disabled text{fill:#efefef;}#mermaid-svg-sT9wUrcALrLBMFn1 .section-8 rect,#mermaid-svg-sT9wUrcALrLBMFn1 .section-8 path,#mermaid-svg-sT9wUrcALrLBMFn1 .section-8 circle,#mermaid-svg-sT9wUrcALrLBMFn1 .section-8 polygon,#mermaid-svg-sT9wUrcALrLBMFn1 .section-8 path{fill:hsl(150, 100%, 76.2745098039%);}#mermaid-svg-sT9wUrcALrLBMFn1 .section-8 text{fill:black;}#mermaid-svg-sT9wUrcALrLBMFn1 .node-icon-8{font-size:40px;color:black;}#mermaid-svg-sT9wUrcALrLBMFn1 .section-edge-8{stroke:hsl(150, 100%, 76.2745098039%);}#mermaid-svg-sT9wUrcALrLBMFn1 .edge-depth-8{stroke-width:-10;}#mermaid-svg-sT9wUrcALrLBMFn1 .section-8 line{stroke:hsl(330, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-sT9wUrcALrLBMFn1 .disabled,#mermaid-svg-sT9wUrcALrLBMFn1 .disabled circle,#mermaid-svg-sT9wUrcALrLBMFn1 .disabled text{fill:lightgray;}#mermaid-svg-sT9wUrcALrLBMFn1 .disabled text{fill:#efefef;}#mermaid-svg-sT9wUrcALrLBMFn1 .section-9 rect,#mermaid-svg-sT9wUrcALrLBMFn1 .section-9 path,#mermaid-svg-sT9wUrcALrLBMFn1 .section-9 circle,#mermaid-svg-sT9wUrcALrLBMFn1 .section-9 polygon,#mermaid-svg-sT9wUrcALrLBMFn1 .section-9 path{fill:hsl(180, 100%, 76.2745098039%);}#mermaid-svg-sT9wUrcALrLBMFn1 .section-9 text{fill:black;}#mermaid-svg-sT9wUrcALrLBMFn1 .node-icon-9{font-size:40px;color:black;}#mermaid-svg-sT9wUrcALrLBMFn1 .section-edge-9{stroke:hsl(180, 100%, 76.2745098039%);}#mermaid-svg-sT9wUrcALrLBMFn1 .edge-depth-9{stroke-width:-13;}#mermaid-svg-sT9wUrcALrLBMFn1 .section-9 line{stroke:hsl(0, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-sT9wUrcALrLBMFn1 .disabled,#mermaid-svg-sT9wUrcALrLBMFn1 .disabled circle,#mermaid-svg-sT9wUrcALrLBMFn1 .disabled text{fill:lightgray;}#mermaid-svg-sT9wUrcALrLBMFn1 .disabled text{fill:#efefef;}#mermaid-svg-sT9wUrcALrLBMFn1 .section-10 rect,#mermaid-svg-sT9wUrcALrLBMFn1 .section-10 path,#mermaid-svg-sT9wUrcALrLBMFn1 .section-10 circle,#mermaid-svg-sT9wUrcALrLBMFn1 .section-10 polygon,#mermaid-svg-sT9wUrcALrLBMFn1 .section-10 path{fill:hsl(210, 100%, 76.2745098039%);}#mermaid-svg-sT9wUrcALrLBMFn1 .section-10 text{fill:black;}#mermaid-svg-sT9wUrcALrLBMFn1 .node-icon-10{font-size:40px;color:black;}#mermaid-svg-sT9wUrcALrLBMFn1 .section-edge-10{stroke:hsl(210, 100%, 76.2745098039%);}#mermaid-svg-sT9wUrcALrLBMFn1 .edge-depth-10{stroke-width:-16;}#mermaid-svg-sT9wUrcALrLBMFn1 .section-10 line{stroke:hsl(30, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-sT9wUrcALrLBMFn1 .disabled,#mermaid-svg-sT9wUrcALrLBMFn1 .disabled circle,#mermaid-svg-sT9wUrcALrLBMFn1 .disabled text{fill:lightgray;}#mermaid-svg-sT9wUrcALrLBMFn1 .disabled text{fill:#efefef;}#mermaid-svg-sT9wUrcALrLBMFn1 .section-root rect,#mermaid-svg-sT9wUrcALrLBMFn1 .section-root path,#mermaid-svg-sT9wUrcALrLBMFn1 .section-root circle,#mermaid-svg-sT9wUrcALrLBMFn1 .section-root polygon{fill:hsl(240, 100%, 46.2745098039%);}#mermaid-svg-sT9wUrcALrLBMFn1 .section-root text{fill:#ffffff;}#mermaid-svg-sT9wUrcALrLBMFn1 .section-root span{color:#ffffff;}#mermaid-svg-sT9wUrcALrLBMFn1 .section-2 span{color:#ffffff;}#mermaid-svg-sT9wUrcALrLBMFn1 .icon-container{height:100%;display:flex;justify-content:center;align-items:center;}#mermaid-svg-sT9wUrcALrLBMFn1 .edge{fill:none;}#mermaid-svg-sT9wUrcALrLBMFn1 .mindmap-node-label{dy:1em;alignment-baseline:middle;text-anchor:middle;dominant-baseline:middle;text-align:center;}#mermaid-svg-sT9wUrcALrLBMFn1 :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}
流畅的Python
第一部分:数据结构
第1章 数据模型
第2章 序列
第3章 字典集合
第4章 文本字节
第二部分:函数作为对象
第5章 数据类构建器
第6章 对象引用可变性
第7章 一等函数
第8章 类型提示
第9章 装饰器闭包
第10章 设计模式简化
第三部分:类和协议
第11章 Python风格对象
第12章 序列修改切片
第13章 接口ABC
第14章 继承
第15章 运算符重载
第四部分:控制流程
第16章 迭代器生成器
第17章 yield from
第18章 并发模型
第五部分:元编程
第19章 执行器
第20章 异步编程
第21章 动态属性
第22章 描述符
第23章 类元编程
九、结束语
《流畅的 Python》是一本值得反复阅读的进阶书籍。它不教你如何写“能运行的代码”,而是引导你写出“美观、高效、可维护”的 Python 代码。全书 24 章环环相扣,从 Python 的数据模型出发,逐步深入到函数式技巧、面向对象惯用法、并发模型和元编程,构成了完整的 Python 进阶知识图谱。
附录虽然篇幅不大,但提供的脚本和参考资料为读者搭建了动手实验和继续深造的桥梁。建议读者在学完全书后,下载官方示例代码仓库,亲手运行和修改每个示例,将书中的思想内化为自己的编码习惯。
最后,借用 Python 之禅的一句话与君共勉:“简单优于复杂,复杂优于凌乱。”
本文为个人学习笔记,仅用于知识分享。如有错误,欢迎指正。
👍🏻 点赞 + 收藏 + 分享,让更多开发者看到这篇深度解析!❤️ 如果觉得有用,请给个赞支持一下作者!




