该技能面向 Python 开发,强调“类型先行”:先定义数据模型(dataclass、Pydantic 或 TypedDict),再定义函数签名(参数与返回值类型),随后按类型实现,并在系统边界做运行时校验,目标是让非法状态在类型检查阶段就无法表达。主要能力包括:用 frozen dataclass 表达不可变结构化数据,用 Literal 构造可辨识联合并用 match 穷尽处理,用 NewType 区分领域基元(如 UserId 与 OrderId),用 Enum 约束取值,用 Protocol 做结构化类型(鸭子类型),用 TypedDict(Required/NotRequired)描述外部数据形状。模块结构上建议小而聚焦的文件,单文件超过约 300 行或承担多重职责时拆分,用 init.py 暴露公开 API,测试放在镜像源码结构的 tests/ 目录。函数式风格建议用推导式替代显式循环,避免可变默认参数与类级可变状态,用 functools.partial 做部分应用。指令层面要求:对不支持的情况抛出描述性异常,每条路径要么返回要么抛出;用 from err 保留原始回溯传递上下文,捕获后必须重抛或返回有意义结果;显式处理空输入、None 与边界值;I/O 用上下文管理器,优先 pathlib 与显式编码;改动逻辑时补充或调整单元测试。配置建议启动时从环境变量加载,用配置 dataclass 或 Pydantic 模型作为唯一来源,必填项缺失应立即失败,开发用合理默认值、生产密钥需显式提供。可选工具 ty(Astral 出品,Rust 编写)可用于快速类型检查,支持 uvx ty check 直接运行或 uv tool install ty 安装,具备自动虚拟环境检测(VIRTUAL_ENV 或 .venv)、从 pyproject.toml 发现项目、增量检查等特性;文中也给出与 pyright、mypy 的取舍说明。限制与细节:资料未提供具体版本要求、性能数据或与其他工具的完整兼容性结论;ty 被描述为早期阶段、演进较快,选用时需自行评估。
python-best-practices
编程与开发
更新于 10-15 18:37