用途:帮助设计结构清晰、模块边界明确、公共接口显式的 Python 项目,使代码易于发现、变更可预测。适用场景包括从零新建 Python 项目、重构现有代码库、用 all 定义模块公共 API、选择扁平或嵌套目录结构、决定测试文件放置方式、创建可复用的库包。
核心概念:模块内聚,把一起变更的相关代码放在同一模块,每个模块应有单一明确用途;显式接口,用 all 声明公共成员,未列出的视为内部实现细节;扁平层级,优先使用浅目录结构,仅在确有子领域时增加深度;统一约定,命名与组织模式在项目中保持一致。
主要模式:每个文件聚焦一个概念,文件承担多个不相关职责、超过约 300 至 500 行或包含因不同原因变化的类时考虑拆分。在模块和包的 init.py 中导入并列出 all,消费者可直接从包导入。优先扁平目录,如 api、services、models、utils,避免过深嵌套。测试组织可选与源码同目录放置,或使用 tests 平行目录,需全项目一致。包初始化文件可提供干净公共接口并设置 version。分层架构按 api、services、repositories、models、schemas、config 划分,每层只依赖下方层。复杂应用可按业务领域组织,如 users、orders、shared。
命名与导入:文件和模块用 snake_case,避免晦涩缩写,类名与文件名对应,如 UserService 放在 user_service.py。优先使用绝对导入,相对导入在模块移动或重组时可能失效。
最佳实践:保持文件聚焦;显式定义 all;优先扁平结构;使用绝对导入;全项目一致;文件名描述用途;分离关注点并使依赖单向流动;在 README 中说明项目结构。限制:资料未提供安装命令、依赖、平台、收费或版本要求等信息。