欢迎光临
我们一直在努力

《流畅的Python》读书笔记26: 全书概览回顾

作者: 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 之禅的一句话与君共勉:“简单优于复杂,复杂优于凌乱。”


    本文为个人学习笔记,仅用于知识分享。如有错误,欢迎指正。
    👍🏻 点赞 + 收藏 + 分享,让更多开发者看到这篇深度解析!❤️ 如果觉得有用,请给个赞支持一下作者!

    赞(0)
    未经允许不得转载:171主机测评 » 《流畅的Python》读书笔记26: 全书概览回顾
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址