用途
python-patterns 是一份 Python 开发模式与最佳实践参考,目标是帮助开发者编写健壮、高效、可维护的 Python 应用。它强调 Pythonic 惯用法、PEP 8 标准与类型提示,适合在以下场景使用:编写新的 Python 代码、审查 Python 代码、重构既有 Python 代码、设计 Python 包或模块。
核心原则
- 可读性优先:代码应当直观易懂,避免“聪明但令人困惑”的写法。
- 显式优于隐式:避免魔法行为,明确说明代码在做什么,警惕隐藏的副作用。
- EAFP(Easier to Ask Forgiveness Than Permission):优先使用异常处理,而非事先检查条件(LBYL)。
主要能力
类型提示
介绍基础类型注解,以及 Python 3.9+ 的内置泛型写法(如 list[str]、dict[str, int])与 3.8 及更早版本的 typing 模块写法;还包含类型别名、TypeVar 泛型,以及基于 Protocol 的鸭子类型。
错误处理
强调捕获具体异常而非裸 except,使用异常链(raise ... from e)保留回溯信息,并建议建立自定义异常层级(如 AppError、ValidationError、NotFoundError)。
上下文管理器
推荐使用 with 进行资源管理,并给出基于 contextlib.contextmanager 的自定义上下文管理器,以及实现 enter/exit 的类式上下文管理器(如数据库事务)。
推导式与生成器
说明简单转换适合列表推导式,复杂逻辑应改用生成器函数;生成器表达式用于惰性求值,生成器函数适合逐行读取大文件。
数据类与命名元组
介绍 dataclass 自动生成 init、repr、eq,以及通过 post_init 做校验;NamedTuple 用于不可变数据结构。
装饰器
包含函数装饰器、带参数的装饰器、基于类的装饰器,并强调使用 functools.wraps 保留元信息。
并发模式
区分 I/O 密集型任务使用线程(ThreadPoolExecutor)、CPU 密集型任务使用多进程(ProcessPoolExecutor),以及使用 async/await 处理并发 I/O。
包组织
给出标准项目布局(src 目录、tests、pyproject.toml 等)、导入顺序约定(标准库、第三方、本地),以及 init.py 中的包级导出与 all。
内存与性能
介绍 slots 降低内存占用、用生成器处理大数据、避免循环内字符串拼接(改用 join 或 StringIO)。
工具链集成
列出常用命令:black、isort 格式化;ruff、pylint 检查;mypy 类型检查;pytest 测试与覆盖率;bandit 安全扫描;pip-audit、safety 依赖检查。并给出 pyproject.toml 中 black、ruff、mypy、pytest 的配置示例。
反模式
指出可变默认参数、用 type() 判断类型、用 == 与 None 比较、from module import *、裸 except 等常见问题,并给出正确写法。
使用方式
资料以代码示例与对照(Good/Bad)形式呈现各项模式,可直接作为编码规范参考,或用于代码审查与重构时的检查清单。文档末尾附有 Python 惯用法速查表(EAFP、上下文管理器、列表推导式、生成器、类型提示、数据类、slots、f-strings、pathlib.Path、enumerate)。
适用场景
适用于日常 Python 开发、代码评审、重构、包与模块设计,以及团队统一编码风格。
限制
资料未提供安装命令、具体版本要求之外的平台信息、收费或价格信息,也未说明其作为工具的具体运行方式;相关内容暂未提供。