主要观点:介绍了 Python 的现代最佳实践,包括使用工具运行 Python 工具、用支持多版本的工具安装 Python、使用项目工具、使用最新 Python 版本、开发 Python 项目的各个方面(代码格式化、代码检查、类型提示、测试、打包等)、语言语法相关(创建数据类、使用枚举或命名元组等)、应用设计(使用日志、选择文件格式等)以及一些库的使用(argparse、pathlib 等)。
关键信息:
- 用 pipx 或 uv 运行 Python 工具,它们会创建独立虚拟环境,pipx 运行可缓存。
- 避免使用系统 Python 安装,用版本管理工具安装 Python,可考虑使用开发容器。
- 选择项目工具如 Poetry、uv、PDM 或 Hatch,避免使用 Rye。
- 新 Python 项目用最新稳定版本,升级项目,避免使用 Python 2。
- 代码格式化用 Ruff 或 Black,用 pre-commit 运行,代码检查用 flake8 或 Ruff,用 mypy 进行类型检查。
- 测试用 pytest,添加插件避免测试干扰,用 pytest-cov 分析代码覆盖。
- 打包用 wheel 包分享库,用 OCI 容器图像打包网络服务应用,用 PyInstaller 打包桌面和命令行应用。
- 要求文件使用哈希验证,配置工具生成包含哈希的文件。
语言语法方面: - 用 Pydantic 或内置数据类创建数据类,PEP 557 描述数据类。
- 用 enum 或 namedtuple 处理不可变键值对集合。
- 用 f-strings 格式化字符串,PEP 498 解释 f-strings。
- 用带时区的 datetime 对象,Python 3.9 及以上可用 zoneinfo 模块。
- 用 collections.abc 构建自定义集合类型。
- 用 breakpoint() 进行调试,PEP 553 描述该函数。
应用设计方面: - 用 logging 代替 print() 输出诊断信息。
- 配置用 TOML,数据传输用 JSON,避免 INI 和 YAML 格式。
- 仅在有意义时使用 async。
库的使用方面: - 用 argparse 处理命令行输入,更新 optparse 代码。
- 用 pathlib 处理文件和目录路径,使用其等价的 os 函数。
- 用 os.scandir() 代替 os.listdir(),性能更好。
- 用 subprocess 运行外部命令,避免使用 os 中的相关函数。
- 用 httpx 代替 requests 进行 Web 客户端开发,避免使用 urllib.request。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。