经典代码鉴赏:从优秀源码学设计
看经典 Python 项目源码,练代码品味和架构思维
- 学会阅读和欣赏优秀代码
- 理解 Pythonic 写法
- 掌握常见设计模式的 Python 实现
- 提升代码品味
经典代码鉴赏:从优秀源码学设计
读优秀源码是提升编程能力最快的方式之一。就像学书法要临摹名家作品,学编程也要读经典代码。
Pythonic:requests 库的 API 设计
requests 是 Python 里最常用的 HTTP 库,它的 API 以简洁好用出名:
# requests 的 API 有多优雅?
# 发送一个 GET 请求只需要:
# import requests
# response = requests.get("https://api.example.com/users")
# data = response.json()
# 对比标准库 urllib(又长又难记):
# import urllib.request, json
# req = urllib.request.Request("https://api.example.com/users")
# with urllib.request.urlopen(req) as resp:
# data = json.loads(resp.read().decode())
print("requests 的设计哲学:")
print("1. 最简单的需求,最简单的代码")
print("2. 方法名就是英语动词:get/post/put/delete")
print("3. 返回值对象有合理的默认行为")
print("4. 高级功能通过参数暴露,不增加简单用法的复杂度")requests.get(url) 一行就能搞定绝大多数场景。需要 session、重试、代理时加参数就行。API 设计的核心:简单的事情简单做,复杂的事情也能做。好的 API 不是功能多,而是默认选择正确。这就是最少惊讶原则——代码的行为应该符合直觉。
设计模式:策略模式的 Python 实现
Python 就爱用简单法子解决问题。Java 得靠接口加实现类的策略模式,Python 直接传函数就行。注意:大型项目里过度用动态特性会降低可维护性。知道啥时候用类、啥时候用函数,是经验的事儿。
Flask 的路由装饰器
Flask 的路由装饰器是 Python 装饰器的经典应用。理解它,你就理解了装饰器的本质:它是一个接收函数、返回函数的函数。
上下文管理器:with 语句
Python 靠鸭子类型和魔术方法吃饭。__enter__/__exit__ 实现上下文管理协议,__iter__/__next__ 实现迭代器协议,__getitem__/__setitem__ 实现容器协议。读源码时看到这些魔术方法,就知道这个类支持什么语法。这也是 Python 代码能写出像内置功能一样自然的 API 的原因。
如何阅读开源项目源码
读源码别从头读到尾,按这个来。
先读 README 和文档,理解项目解决什么问题
从一个简单的入口函数开始(如 requests.get)
用 IDE 的跳转到定义追踪调用链
画一张核心类/函数的关系图
推荐入门项目:requests(HTTP)、Flask(Web框架)、Rich(终端美化)
Python 中策略模式最 Pythonic 的实现方式是?
资深工程师加餐
底层原理 · 大厂视角 · 工程经验,点卡片展开
大模型逐 token 生成,若等全部生成再返回,用户要盯着空白等好几秒;用 SSE(Server-Sent Events)或分块流式传输,模型每产出一点就推给前端,体验上就是「边想边打」。工程要点:前端要处理中途断流与重试、收到完整结束标记再收尾、流式期间禁用重复发送;后端要在客户端断开时及时取消上游请求,否则会白白烧完整个生成的 token 费用。
挑战任务
迷你路由框架
实现一个简化版 Web 路由系统,支持注册路由和处理请求。
课后作业
实现缓存装饰器
写一个 @cache 装饰器,缓存函数的计算结果,相同参数直接返回缓存。