👉 项目官网:https://www.python-office.com/ 👈
👉 本开源项目的交流群 👈
大家好,这里是程序员晚枫,全网同名。
Python 语法进阶课程大纲
(目标:已掌握基础语法,想写出“像样”的 Python 代码,但还不想扎进 CPython 源码的工程师)
总时长:10 周 × 2.5 h(直播 / 录播均可拆分)
──────────────────
第 0 章 课程预热(30 min,可选)
- 开发环境再梳理
– pyenv + virtualenv + poetry 一条命令搭环境
– VS Code / PyCharm 的隐藏技巧(remote、test runner、postfix) - 代码风格统一
– black + isort + flake8 配置模板
– pre-commit 一键格式化 - Git 工作流:分支命名、commit message、rebase 示范
──────────────────
第 1 章 迭代器协议与生成器范式(3 h)
1.1 迭代器 vs 可迭代对象
‑ __iter__
/ __next__
手写一个斐波那契迭代器
1.2 生成器函数与生成器表达式
‑ yield
语义、send/throw/close 实战
‑ 用生成器重构“逐行读大文件”案例
1.3 内置高阶迭代工具
‑ itertools 三板斧:takewhile、groupby、tee
‑ 用 itertools.chain.from_iterable
打平三层嵌套列表
1.4 惰性求值陷阱
‑ 生成器只能遍历一次?如何克隆?
‑ 内存与 CPU trade-off 可视化
──────────────────
第 2 章 装饰器深度实践(3 h)
2.1 函数装饰器到类装饰器
‑ 保留元数据的 functools.wraps
2.2 带参数的装饰器工厂
‑ 实现 @retry(times=3, delay=1)
2.3 装饰器链顺序与调试技巧
‑ 用 inspect
查看调用栈
2.4 实战:写一个自动缓存装饰器(支持 TTL、LRU)
──────────────────
第 3 章 上下文管理器与资源治理(2.5 h)
3.1 with
语句背后的 __enter__
/__exit__
3.2 contextlib 三板斧
‑ @contextmanager
写数据库事务
‑ contextlib.ExitStack
动态管理多个资源
3.3 实战:写一个线程安全的文件锁
3.4 异步上下文管理器 (__aenter__
/__aexit__
) 先睹为快
──────────────────
第 4 章 描述符协议与属性拦截(2.5 h)
4.1 @property
的底层:描述符协议
4.2 数据描述符 vs 非数据描述符优先级
4.3 实战:ORM 字段类型校验器
‑ 写一个 StringField(max_length=128)
4.4 利用描述符实现只读类变量
──────────────────
第 5 章 元类黑魔法入门(3 h)
5.1 类也是对象:type
的三参数形式
5.2 元类 vs 类装饰器:何时选谁?
5.3 实战:写一个自动注册子类的插件框架
5.4 元类常见误区与调试技巧
──────────────────
第 6 章 数据类与类型提示工程化(3 h)
6.1 dataclasses
高阶用法
‑ field()
的 default_factory
、__post_init__
6.2 typing
模块速通
‑ Literal
、TypedDict
、Protocol
‑ mypy 实战:渐进式类型检查 CI 集成
6.3 运行时类型校验:pydantic
案例
6.4 用 dataclasses.asdict
自动生成 REST 响应
──────────────────
第 7 章 并发模型抉择(4 h)
7.1 线程、进程、协程:各自适用场景
7.2 concurrent.futures
线程池 vs 进程池
7.3 asyncio
核心概念
‑ event loop、await、Task、Future
‑ 用 asyncio.Semaphore
控制并发爬虫
7.4 混合并发模式:CPU 密集 + I/O 密集
‑ asyncio.to_thread
与 run_in_executor
──────────────────
第 8 章 内存模型与性能调优(3 h)
8.1 CPython 中的引用计数 + 垃圾回收
8.2 用 tracemalloc
抓内存泄漏
8.3 可变对象陷阱:列表乘法与默认参数
8.4 性能可视化
‑ cProfile
+ snakeviz
‑ line_profiler
逐行耗时
──────────────────
第 9 章 模块化与包管理工程化(2.5 h)
9.1 绝对导入 vs 相对导入
9.2 __init__.py
的演进(PEP 420 命名空间包)
9.3 构建可发布的包
‑ pyproject.toml
标准
‑ 用 build
+ twine
发版到 PyPI
9.4 语义化版本号与自动化发布流水线
──────────────────
第 10 章 综合实战:迷你 Web 框架(4 h)
- 需求:实现支持路由、中间件、异步视图的 300 行框架
- 技术点串烧
– 元类自动注册路由
– 异步上下文管理器管理数据库连接池
– 数据类生成 Swagger 文档
– pytest + faker 写单元测试 - 课后挑战:给框架加一个装饰器缓存层
──────────────────
附录 & 资源
- 每章源码仓库(含分支 tag)
- 延伸阅读书单
– 《Effective Python》(第 2 版)
– 《Python 并发编程实战》 - 工具清单
– rich:终端可视化
– typer:写 CLI 神器
– pytest-xdist:并行测试
课程交付物
- 10 份 Jupyter Notebook(可交互运行)
- 1 套完整 Demo 项目(含 CI/CD 配置)
- 课后编程题自动评测(GitHub Classroom 集成)
大家在学习课程中有任何问题,欢迎+微信和我交流👉我的联系方式:微信、读者群、1对1、福利