名称: python 描述: 自适应Python开发指南,具有分级复杂度级别(最小/标准/完整)。根据项目上下文自动选择适当的指导 - 从简单脚本(仅干净Python代码)到完整生产系统(完整工具生态系统)。涵盖现代约定、测试、工具、安全和最佳实践。在编写Python代码、转换脚本、设置项目或构建生产系统时使用。关键词: PEP-8, Ruff, pytest, mypy, 简单脚本, 项目结构, PyPI, 打包, 类型提示, 干净代码 允许工具: Read, Bash, Glob, Grep
Python开发技能
全面指南,涵盖现代Python开发,包括约定、测试、工具、安全、性能和生态系统最佳实践(2024-2025标准)。
第2层快速开始
适用于多文件项目、团队协作和维护的代码:
# 安装Python 3.12和uv(参见安装指南)
# Windows: winget install Python.Python.3.12 && winget install astral-sh.uv
# macOS: brew install python@3.13 uv
# Linux: apt install python3.13 && curl -LsSf https://astral.sh/uv/install.sh | sh
# 使用现代结构创建新项目
uv init my-project
cd my-project
# 添加依赖项
uv add requests httpx pydantic
# 添加开发依赖项
uv add --dev pytest pytest-cov ruff mypy
# 设置代码质量(创建pyproject.toml配置 - 参见assets/pyproject-toml-template.toml)
# 配置Ruff、mypy、pytest
# 编写测试(pytest)
# tests/test_example.py - 镜像src/结构
# 运行质量检查
uv run ruff check . # 代码检查
uv run ruff format . # 格式化
uv run mypy . # 类型检查
uv run pytest # 运行测试
uv run pytest --cov # 带覆盖率
何时使用此技能
在需要以下指导时调用此技能:
- 安装与设置:安装Python 3.12/3.14、uv,设置开发环境
- 代码风格:遵循PEP-8,配置Ruff/Black,命名约定
- 项目结构:使用src/布局组织代码,导入,包结构
- 依赖管理:使用uv、Poetry、pip、虚拟环境、pyproject.toml
- 测试:编写pytest测试、夹具、参数化、覆盖率、模拟
- 类型提示:现代类型模式、mypy配置、协议、泛型
- 代码质量:设置Ruff、mypy、Bandit、预提交钩子、CI/CD
- 异步编程:asyncio模式、async/await、TaskGroup、结构化并发
- 安全:OWASP最佳实践、输入验证、依赖扫描
- 性能:性能分析、优化模式、Cython
- 打包:pyproject.toml、PyPI发布、版本控制、分发
- 常用库:标准库要点、生态系统概述
- 文档:文档字符串(PEP-257)、Sphinx、文档生成
概述
此技能提供符合当前最佳实践(2024-2025)的现代Python开发指导:
核心标准:
- 风格:PEP-8(通过Ruff强制执行)
- 类型提示:PEP-484、PEP-526、现代语法(PEP-604:
str | None) - 打包:PEP-517、PEP-518(pyproject.toml)
- 文档字符串:PEP-257
- 测试:pytest(行业标准)
- 依赖管理:uv(最快)或Poetry(功能丰富)
现代工具(2024-2025):
- 代码检查器/格式化器:Ruff(替代flake8、isort,可选Black)
- 类型检查器:mypy带严格模式
- 测试框架:pytest
- 依赖管理器:uv或Poetry
- 安全扫描器:Bandit + pip-audit
- 项目配置:pyproject.toml(通用)
项目结构:
- src/布局(现代标准,非扁平布局)
- 绝对导入优于相对导入
- 测试镜像src/结构
- pyproject.toml用于所有配置
官方来源: 所有指导基于官方Python文档、PEP和工具文档:
快速层级选择
选择您的复杂度级别:
🎯 第1层:最小(简单脚本)
→ 单文件实用程序、转换脚本、一次性自动化 → 仅Python代码 - 无工具开销 → 跳转到最小指导
📦 第2层:标准(组织化项目)
→ 多文件模块、团队项目、维护的代码 → 现代项目结构 + 测试 → 跳转到标准指导
🚀 第3层:完整(生产系统)
→ PyPI包、企业系统、生产部署 → 完整工具生态系统 → 跳转到完整指导
不确定? 默认使用第2层(标准) - 它覆盖大多数用例。
第1层:最小(简单脚本)
适用于: 单文件实用程序、脚本转换和简单自动化。
设置
仅Python 3.12+ - 无需额外工具:
- ✅ 无需uv,无需虚拟环境
- ✅ 无需pyproject.toml,无需src/布局
- ✅ 可选:安装Ruff进行快速代码检查(
pip install ruff)
代码标准
遵循这些简单原则:
- PEP-8命名:函数/变量使用
snake_case,类使用PascalCase - 类型提示:为清晰度添加(帮助读者理解代码)
- 文档字符串:函数的简单描述
- pathlib:使用
pathlib.Path进行文件操作(非os.path) - 内置功能:使用Python的内置
json、datetime、sys模块
示例:简单日志脚本
#!/usr/bin/env python3
"""简单日志实用程序 - 将事件转换为JSON。"""
import json
import sys
from datetime import datetime, timezone
from pathlib import Path
def log_event(event_name: str, data: dict) -> None:
"""
将事件记录到每日JSONL文件。
参数:
event_name: 事件名称
data: 要记录的事件数据
"""
log_dir = Path(__file__).parent / "logs"
log_dir.mkdir(exist_ok=True)
now = datetime.now(timezone.utc)
log_file = log_dir / f"{now:%Y-%m-%d}.jsonl"
entry = {
"timestamp": now.isoformat(),
"event": event_name,
"data": data
}
with open(log_file, "a", encoding="utf-8") as f:
f.write(json.dumps(entry) + "
")
if __name__ == "__main__":
if len(sys.argv) < 2:
print("用法: script.py <event_name>", file=sys.stderr)
sys.exit(1)
event_name = sys.argv[1]
data = json.loads(sys.stdin.read())
log_event(event_name, data)
可选:快速代码检查
如果您想检查代码风格:
# 安装Ruff(可选)
pip install ruff
# 检查代码
ruff check script.py
# 格式化代码
ruff format script.py
何时升级到第2层
考虑升级到第2层(标准)当:
- ✅ 脚本增长到3个以上文件
- ✅ 多人在代码上工作
- ✅ 需要自动化测试
- ✅ 管理外部依赖项
- ✅ 代码将长期维护
第2层:标准(组织化项目)
适用于: 多文件模块、团队项目和维护的代码。
现代Python项目设置,具有适当的结构、测试和质量工具。
安装
安装Python 3.12+和uv(现代依赖管理器)。参见平台特定指南:
项目设置和组织
约定和风格 - 遵循PEP-8,使用Ruff进行代码检查和格式化:
- 参见约定和风格指南
项目结构 - 使用现代src/布局进行适当打包:
- 参见项目结构指南
依赖管理 - 在uv(最快)、Poetry(功能丰富)或pip+venv之间选择:
- 参见依赖管理指南
测试和质量
测试 - 使用pytest与夹具、参数化和覆盖率:
- 参见测试方法指南
类型提示 - 现代类型化与mypy、协议和泛型:
- 参见类型提示指南
代码质量 - 设置Ruff、mypy、Bandit和预提交钩子:
- 参见代码质量工具指南
高级开发
异步编程 - asyncio模式、TaskGroup、结构化并发:
- 参见异步模式指南
安全 - OWASP最佳实践、输入验证、密钥管理:
- 参见安全最佳实践指南
性能 - 性能分析、优化模式、内存效率:
- 参见性能优化指南
打包 - 使用pyproject.toml和语义版本控制发布到PyPI:
- 参见打包和分发指南
库 - 标准库要点和生态系统概述:
- 参见常用库指南
文档 - PEP-257文档字符串、Sphinx、ReadTheDocs:
第3层:完整(生产系统)
适用于: PyPI包、企业系统和生产部署。
第2层(标准)中的所有内容加上:
安全和质量
- 安全扫描:Bandit用于代码安全,pip-audit用于依赖漏洞
- 预提交钩子:每次提交前的自动化检查
- 全面类型覆盖:mypy严格模式覆盖整个代码库
- 代码覆盖率执行:CI/CD中的最低覆盖率要求
分发
- PyPI打包:构建并发布Python包到PyPI
- 语义版本控制:遵循semver进行版本管理
- 二进制分发:创建wheel以加速安装
- 多平台支持:测试和构建Windows/macOS/Linux
CI/CD
- GitHub Actions / GitLab CI:每次推送的自动化测试
- 多版本测试:针对Python 3.12、3.13、3.14测试
- 覆盖率跟踪:自动化覆盖率报告和执行
- 发布自动化:标签上的自动PyPI发布
文档
- Sphinx:从文档字符串生成API文档
- ReadTheDocs:托管带版本控制的文档
- 全面文档字符串:所有公共API的Google或NumPy风格
- 示例和教程:面向用户的文档带示例
详细指南
参见这些参考文件以获取全面的生产指导:
- 安全最佳实践 - OWASP、Bandit、pip-audit
- 打包和分发 - PyPI发布、版本控制
- 代码质量工具 - 预提交钩子、CI/CD设置
- 文档字符串和文档 - Sphinx、ReadTheDocs
参考文件
所有详细指导都在references/目录中:
安装:
- 安装概述 - 平台无关概念
- Windows安装 - Windows上的Python + uv
- macOS安装 - macOS上的Python + uv
- Linux安装 - Linux上的Python + uv
核心开发:
- 约定和风格 - PEP-8、Ruff、Black、命名
- 项目结构 - src/布局、导入、组织
- 依赖管理 - uv、Poetry、pip、venv
- 测试方法 - pytest、夹具、覆盖率
- 类型提示 - 现代类型化、mypy、协议
- 代码质量工具 - Ruff、mypy、Bandit设置
高级主题:
- 异步模式 - asyncio、TaskGroup、结构化并发
- 安全最佳实践 - OWASP、验证、扫描
- 性能优化 - 性能分析、模式、Cython
- 打包和分发 - pyproject.toml、PyPI、版本控制
- 常用库 - 标准库 + 生态系统要点
- 文档字符串和文档 - PEP-257、Sphinx
资产
模板文件:
- pyproject.toml模板 - 现代项目配置模板
测试和评估
此技能包括正式评估场景以验证有效性:
- 参见技能评估场景 覆盖的测试案例:
- 最小层(简单脚本)
- 标准层(新项目、代码质量工具)
- 完整层(生产系统)
- 替代工作流(Poetry vs uv)
- 成功标准和测试方法
相关技能
- git-commit:Git提交工作流(补充Python项目工作流)
- git:git-config:Git配置(Python项目使用Git)
- code-quality:markdown-linting:通过插件的Markdown代码检查(Python项目有README)
版本历史
- 1.1.2 (2025-11-25): 全面改进
- 修复了示例代码中已弃用的
datetime.utcnow()(使用datetime.now(timezone.utc)) - 添加了Python 3.13覆盖(原在3.12和3.14之间缺失)
- 更新了PEP URL到现代格式(peps.python.org替代python.org/dev/peps/)
- 在示例代码中添加了UTF-8编码到文件打开
- 在示例中添加了缺失CLI参数的错误处理
- 修复了示例代码中已弃用的
- 1.1.1 (2025-11-25): 版本审计更新
- 更新了工具版本引用(Ruff 0.14.x、mypy 1.18.x、pytest 9.x)
- 验证了所有参考文件链接存在且正确
- 根据官方要求验证了YAML前言
- 1.1.0 (2025-11-18): 自适应分层指导
- 添加了三层复杂度系统(最小/标准/完整)
- 第1层:最小指导用于简单脚本(无工具开销)
- 第2层:标准指导用于组织化项目(原始快速开始)
- 第3层:完整指导用于生产系统(全面工具)
- 上下文感知技能根据查询自动选择适当层级
- 防止“大爆炸”过度工程用于简单场景
- 1.0.0 (2025-11-17): 初始发布
- 全面现代Python指导(2024-2025标准)
- 从
docs/python/迁移了安装文档 - 添加了12个详细参考文件
- 现代工具:Ruff、uv、pytest、mypy
- pyproject.toml模板
官方文档
Python:
- 官方Python文档: https://docs.python.org/
- Python 3.12新特性: https://docs.python.org/3.12/whatsnew/3.12.html
- Python 3.13新特性: https://docs.python.org/3.13/whatsnew/3.13.html
- Python 3.14新特性: https://docs.python.org/3.14/whatsnew/3.14.html
- Python增强提案(PEPs): https://peps.python.org/
工具:
- uv文档: https://docs.astral.sh/uv/
- Ruff文档: https://docs.astral.sh/ruff/
- mypy文档: https://mypy-lang.org/
- pytest文档: https://docs.pytest.org/
- Poetry文档: https://python-poetry.org/docs/
PEPs(Python增强提案):
- PEP-8(风格指南): https://peps.python.org/pep-0008/
- PEP-257(文档字符串约定): https://peps.python.org/pep-0257/
- PEP-484(类型提示): https://peps.python.org/pep-0484/
- PEP-517(构建系统): https://peps.python.org/pep-0517/
- PEP-518(pyproject.toml): https://peps.python.org/pep-0518/
- PEP-604(联合类型与|): https://peps.python.org/pep-0604/
最后更新
日期: 2025-11-28 模型: claude-opus-4-5-20251101