02-核心编程篇
核心编程篇面向已经掌握 Python 基础语法的学习者,重点建立可维护、可复用、可测试的 Python 编程能力。本篇从函数开始,逐步进入面向对象、异常处理、迭代协议、装饰器与类型提示。
本篇代码基于 Python 3.13+ 编写。每个专题都配有独立示例项目(uv + hatchling + pytest),可进入对应项目目录使用 uv run pytest 验证。
学习目标
完成本篇后,你应该能够:
- 用函数拆分业务逻辑,理解参数传递、作用域和闭包行为。
- 用类组织状态和行为,掌握继承、封装、多态以及常用设计原则。
- 设计清晰的异常边界,正确使用自定义异常和上下文管理器。
- 理解迭代协议,能够编写迭代器、生成器和异步生成器。
- 使用装饰器封装横切逻辑,例如日志、鉴权、缓存、重试和计时。
- 用类型提示表达接口约束,提升代码可读性和静态检查质量。
章节导航
01-函数
| 章节 | 内容 | 说明 |
|---|---|---|
| 01-函数基础 | 函数定义、调用、返回值 | 建立函数式拆分的基本能力 |
| 02-函数参数详解 | 位置参数、关键字参数、默认参数、*args、**kwargs | 理解 Python 参数绑定规则 |
| 03-变量作用域 | LEGB、global、nonlocal、闭包变量 | 避免作用域相关的隐蔽错误 |
| 04-Lambda匿名函数 | Lambda、排序键、回调、表达式限制 | 掌握轻量函数表达式的适用边界 |
| 05-Python内置函数详解 | 常用内置函数、组合使用、实践场景 | 提升日常代码表达效率 |
02-面向对象编程
| 章节 | 内容 | 说明 |
|---|---|---|
| 01-面向对象基础 | 类、对象、构造方法、实例化 | 从数据和行为的组合理解对象 |
| 02-属性与方法 | 实例属性、类属性、实例方法、类方法、静态方法 | 理解对象成员的归属和调用方式 |
| 03-继承 | 继承、super()、多重继承、MRO | 掌握复用机制及其风险 |
| 04-封装 | 访问约定、@property、描述符 | 控制对象状态的暴露方式 |
| 05-多态 | 鸭子类型、抽象基类、接口约束 | 写出面向行为而非具体类型的代码 |
| 06-设计原则 | 组合优先、SOLID、职责拆分 | 建立工程化建模意识 |
| 07-数据类 | dataclass、字段默认值、不可变对象 | 简化数据对象定义 |
| 08-魔术方法 | 运算符重载、容器协议、上下文协议 | 让自定义对象融入 Python 语法 |
| 09-元类 | 类创建过程、元类、注册机制 | 理解高级框架的底层机制 |
| 10-子类钩子 | __init_subclass__、类注册、约束校验 | 在类定义阶段注入规则 |
03-错误与异常
| 章节 | 内容 | 说明 |
|---|---|---|
| 01-错误与异常基础 | 语法错误、运行时错误、常见异常类型 | 建立异常分类认知 |
| 02-异常处理 | try、except、else、finally | 正确处理可恢复错误 |
| 03-抛出异常 | raise、自定义异常、异常链 | 设计清晰的错误语义 |
| 04-上下文管理器 | with、__enter__、__exit__、contextlib | 管理资源生命周期 |
04-迭代器与生成器
| 章节 | 内容 | 说明 |
|---|---|---|
| 01-迭代基础 | 可迭代对象、迭代器、for 循环原理 | 理解 Python 遍历机制 |
| 02-自定义迭代器 | __iter__、__next__、状态维护 | 编写自定义遍历逻辑 |
| 03-生成器基础 | yield、生成器函数、生成器表达式 | 用惰性计算处理序列数据 |
| 04-生成器高级特性 | send()、throw()、close()、协程式生成器 | 理解生成器双向通信 |
| 05-itertools模块 | 无限迭代器、组合迭代器、分组与排列 | 使用标准库构建高效数据管道 |
| 06-异步生成器 | async for、异步迭代协议、流式数据 | 处理异步数据流 |
05-装饰器与闭包
| 章节 | 内容 | 说明 |
|---|---|---|
| 01-函数是一等公民 | 函数对象、传参与返回、嵌套函数 | 为闭包和装饰器打基础 |
| 02-闭包与作用域链 | 闭包、自由变量、__closure__、nonlocal | 理解状态封装方式 |
| 03-装饰器核心原理 | 装饰器语法、包装函数、functools.wraps | 掌握装饰器的本质 |
| 04-带参数装饰器与装饰器工厂 | 装饰器工厂、多层闭包、参数化配置 | 写出可配置的装饰器 |
| [05-functools 标准装饰器](./05-装饰器与闭包/05-functools 标准装饰器.md) | lru_cache、cached_property、singledispatch | 使用标准工具解决常见问题 |
| 06-装饰器高级用法与最佳实践 | 类装饰器、方法装饰器、组合顺序 | 控制复杂场景下的行为 |
| 07-装饰器边界情况与调试实战 | 调试、签名保留、异常定位、反模式 | 避免装饰器带来的维护问题 |
06-类型提示
| 章节 | 内容 | 说明 |
|---|---|---|
| 01-类型提示基础 | 基础类型、容器类型、可选类型、联合类型 | 用类型注解表达基本契约 |
| 02-类型进阶应用 | 泛型、协议、TypedDict、回调类型 | 描述更复杂的数据和接口 |
| 03-高级类型特性 | ParamSpec、TypeVar、类型守卫、Python 3.12+ 类型语法 | 为库代码和框架代码建立类型边界 |
推荐学习路线
text
01-函数
↓
02-面向对象编程
↓
03-错误与异常
↓
04-迭代器与生成器
↓
05-装饰器与闭包
↓
06-类型提示如果你的目标是快速写出可用脚本,可以先完成函数、异常和迭代器章节;如果你的目标是后端、框架或大型项目开发,面向对象、装饰器和类型提示应完整学习。
示例项目
| 专题 | 示例项目 | 运行方式 |
|---|---|---|
| 01-函数 | 01-函数/functions_demo/ | uv run pytest |
| 02-面向对象编程 | 02-面向对象编程/oop_demo/ | uv run pytest |
| 03-错误与异常 | 03-错误与异常/exceptions_demo/ | uv run pytest |
| 04-迭代器与生成器 | 04-迭代器与生成器/iterators_demo/ | uv run pytest |
| 05-装饰器与闭包 | 05-装饰器与闭包/decorators_demo/ | uv run pytest |
| 06-类型提示 | 06-类型提示/type_hints_demo/ | uv run pytest |
运行示例项目时,先进入对应项目目录:
bash
cd 2-core/01-函数/functions_demo
uv run pytest学习建议
- 先读章节 README,把握该专题的结构,再进入具体文章。
- 每学完一个专题,运行对应示例项目的测试,确认代码行为。
- 阅读函数、装饰器、类型提示章节时,重点关注“接口设计”和“调用边界”。
- 阅读面向对象章节时,重点区分“能继承”和“应该继承”。
- 阅读异常章节时,关注错误是否可恢复、错误语义是否对调用者清晰。