Python最佳实践
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/python-best-practices-epfa。
技能介绍
Python 项目扩张时,常见痛点会逐渐暴露:函数签名缺少类型注解导致协作时反复猜参数,async 代码里混入阻塞 I/O 引发性能瓶颈,项目结构混乱导致意外从根目录导入,环境依赖未隔离引发版本冲突,测试重复代码多且难以维护。这些散落的问题会持续消耗维护成本,该技能以明确的规则覆盖这些高频场景。
核心能力覆盖
- 类型注解规范:要求始终标注函数签名,使用 3.12+ 语法,CI 中集成
mypy --strict或pyright,type: ignore需附具体理由 - Dataclass 与 Pydantic 的边界:内部领域模型、无需校验的数据用
dataclass(frozen=True实现不可变值对象,slots=True优化内存);API 边界、配置文件、外部输入解析用 Pydantic 做校验 - Async 模式约束:异步 HTTP 用
httpx替代requests,并发任务用asyncio.gather,限流用asyncio.Semaphore,遗留阻塞 I/O 用asyncio.to_thread包装,连接/会话等资源用async with管理 - 项目结构:采用
src布局,避免意外从项目根目录导入 - 虚拟环境与依赖:强制使用虚拟环境,禁止全局安装包,通过
uv.lock或pip freeze生成的requirements.txt锁定精确版本 - 测试规范:
pytest用conftest.py存放共享 fixture,pytest.mark.parametrize覆盖测试变体,tmp_path处理文件系统相关测试 - 错误处理约定:禁用裸
except:,捕获最具体的异常类型,用logger.exception()记录 traceback,为应用定义自定义异常层级
适用边界
适合需要团队协作的中大型 Python 项目,依赖 Python 3.12+ 的类型语法支持;极小脚本可按需裁剪规则,无需强制全量遵循。
使用场景
- 构建异步 API 服务时,统一团队的 httpx 调用与 asyncio.gather 并发模式,避免阻塞 I/O 混入 async 函数
- 新建 Python 项目时,规范 src 布局、pyproject.toml 工具配置与依赖锁定文件
- 处理外部 API 或配置输入时,在边界用 Pydantic 做校验,内部领域模型用 dataclass
- 编写单元测试时,统一 conftest.py 共享 fixture 与 pytest.mark.parametrize 的用法
适合人员
- Python 后端工程师,正在构建异步 API 服务,需要规范 async 代码模式与依赖管理
- Python 项目维护者,团队协作时需要统一类型注解、异常处理与代码风格约定
- Python 库作者,需要为公开接口编写类型签名、测试规范与项目结构
- 新接触 Python 工程化的开发者,想为个人项目建立符合社区规范的工程结构