Python工具箱(免费版)
概述
Python工具箱(免费版)为个人开发者提供实用的Python编码规范与最佳实践指导。当你在请求中提及 Python、编码规范、Pythonic 等内容时,本工具会自动激活,为你输出符合PEP 8与现代Python惯例的代码、给出风格纠正建议,并附上提交前自查清单。
本版本聚焦核心规范与个人使用场景,适合个人脚本开发、学习现代Python惯例与提交前快速自查。如需类型注解深度规范、异步最佳实践、测试策略与团队治理,请升级至 PRO 版本。
核心能力
| 能力 | 说明 |
|---|---|
| PEP 8规范 | 缩进、行长、空行、导入顺序、命名约定 |
| Pythonic模式 | 推导式、上下文管理器、解包、f-string |
| 依赖管理 | uv优先,pip回退 |
| 提交前自查 | py_compile / pytest / ruff / black |
| 反模式识别 | 可变默认参数、裸except、%格式化 |
技术实现要点:核心能力基于input_params参数与output_format配置实现,支持创建/查询/修改/删除等操作模式,通过config_options进行运行时配置。 |
核心功能执行
用input_params参数进行配置。
输入: 用户提供核心功能执行所需的指令和必要参数。 处理: 解析核心功能执行的输入参数,完成核心逻辑,返回结构化响应。 输出: 返回核心功能执行的响应数据,包含状态码、结果和日志。
- 执行此能力时使用
input_params参数,支持创建/查询/导出操作
参数配置与调用
用config_options参数进行配置。
输入: 用户提供参数配置与调用所需的指令和必要参数。 处理: 解析参数配置与调用的输入参数,完成核心逻辑,返回结构化响应。 输出: 返回参数配置与调用的响应数据,包含状态码、结果和日志。
- 执行此能力时使用
config_options参数,支持修改/重置/导入操作
结果处理与输出
用output_format参数进行配置。
输入: 用户提供结果处理与输出所需的指令和必要参数。 处理: 解析结果处理与输出的输入参数,完成核心逻辑,返回结构化响应。 输出: 返回结果处理与输出的响应数据,包含状态码、结果和日志。
- 执行此能力时使用
output_format参数,支持导出/保存/转换操作 能力覆盖范围:本skill的核心能力覆盖以下场景关键词:个人开发者的、编码规范、模式与基础依赖管、工具箱、免费版、为个人开发者提供、实用的、编码规范与最佳实、践指导、代码风格规范、编码模式与惯用法、基础依赖管理、提交前自查清单等。这些关键词对应description中声明的使用场景,均已在上述能力点中提供对应的操作支持。
使用场景
场景一:个人脚本快速开发
用户希望生成一个处理JSON文件的工具脚本,工具输出符合规范的实现。
"""处理JSON数据文件的工具脚本。"""
# ...
import json
from pathlib import Path
# ...
def load_config(config_path: str) -> dict:
"""加载JSON配置文件。
# ...
Args:
config_path: 配置文件路径。
# ...
Returns:
解析后的配置字典。
# ...
Raises:
FileNotFoundError: 文件不存在时。
json.JSONDecodeError: JSON格式错误时。
"""
path = Path(config_path)
if not path.exists():
raise FileNotFoundError(f"配置文件不存在: {config_path}")
# ...
with path.open(encoding="utf-8") as f:
return json.load(f)
# ...
def main() -> None:
config = load_config("config.json")
print(f"加载配置成功,共 {len(config)} 项")
# ...
if __name__ == "__main__":
main()
场景二:提交前自查
用户在提交前运行自查,确保代码符合规范。
# 语法检查
python -m py_compile *.py
# ...
# 测试
python -m pytest tests/ -v 2>/dev/null || python -m unittest discover -v 2>/dev/null || echo "未找到测试"
# ...
# 风格检查(优先ruff,回退black)
ruff check . --fix 2>/dev/null || python -m black --check . 2>/dev/null
场景三:Pythonic惯用法学习
用户询问如何写出更Pythonic的代码,工具给出标准示例。
# 推导式
squares = [x**2 for x in range(10)]
lookup = {item.id: item for item in items}
# ...
# 上下文管理器
with open("file.txt") as f:
data = f.read()
# ...
# 解包
first, *rest = items
a, b = b, a # 交换
# ...
# f-string
msg = f"Hello {name}, you have {count} items"
# ...
# 类型注解
def process(items: list[str]) -> dict[str, int]:
...
# ...
# dataclass
from dataclasses import dataclass
# ...
@dataclass
class User:
name: str
email: str
active: bool = True
# ...
# pathlib
from pathlib import Path
config = Path.home() / ".config" / "app.json"
# ...
# 枚举与zip
for i, item in enumerate(items):
...
for a, b in zip(list1, list2, strict=True):
...
不适用场景
以下场景Python工具箱(免费版)不适合处理:
- 无明确技术栈的模糊需求
- 纯架构设计决策
- 运维部署管理
触发条件
需要代码生成、编程辅助、调试测试、开发部署时使用。不适用于非本工具能力范围的需求。
快速开始
1. Python版本选择
- 最低:Python 3.10+(3.9已于2025年10月EOL)
- 推荐:Python 3.11-3.13 用于新项目
- 永不使用Python 2语法或模式
- 善用现代特性:match语句、海象运算符、类型注解
依赖详情
优先检查uv,回退pip:
if command -v uv &>/dev/null; then
uv pip install <package>
uv pip compile requirements.in -o requirements.txt
else
pip install <package>
fi
新项目使用uv初始化:
uv init myproject
# 或
uv venv && source .venv/(请参考skill目录中的脚本文件)
3. 提交前自查
python -m py_compile *.py
python -m pytest -v
ruff check . --fix
响应解析: 完成完成后,查看输出响应确认任务状态。成功时输出包含解析摘要和响应数据;失败时根据错误信息排查问题,查阅错误解析章节获取恢复步骤。
示例
基础ruff配置
# pyproject.toml
[tool.ruff]
line-length = 88
target-version = "py311"
# ...
[tool.ruff.lint]
select = [
"E", # pycodestyle errors
"W", # pycodestyle warnings
"F", # pyflakes
"I", # isort
"B", # flake8-bugbear
"UP", # pyupgrade
]
ignore = ["E501"] # 行长由formatter处理
# ...
[tool.ruff.format]
quote-style = "double"
indent-style = "space"
基础pytest配置
[tool.pytest.ini_options]
minversion = "7.0"
testpaths = ["tests"]
python_files = ["test_*.py"]
python_functions = ["test_*"]
addopts = "-v --tb=short"
最佳实践
1. 代码风格(PEP 8)
- 缩进:4个空格(永不用Tab)
- 行长:88字符(Black默认)或79(严格PEP 8)
- 顶层定义前空2行,类内方法间空1行
- 导入顺序:标准库 → 第三方 → 本地,组内字母序
- 命名:函数/变量用snake_case,类用PascalCase,常量用UPPER_CASE
2. 文档字符串
def fetch_user(user_id: int, include_deleted: bool = False) -> User | None:
"""按ID从数据库获取用户。
# ...
Args:
user_id: 用户唯一标识。
include_deleted: 是否包含软删除用户。
# ...
Returns:
找到则返回User对象,否则返回None。
# ...
Raises:
DatabaseError: 连接失败时。
"""
3. 反模式规避
# 错误:可变默认参数(跨调用共享)
def bad(items=[]):
...
# ...
# 正确
def good(items=None):
items = items or []
# ...
# 错误:裸except(捕获SystemExit、KeyboardInterrupt)
try:
...
except:
...
# ...
# 正确
try:
...
except Exception:
...
4. 测试
- 使用pytest(首选)或unittest
- 测试文件命名
test_*.py,测试函数test_* - 聚焦单元测试,外部依赖用mock
- 提交前运行:
python -m pytest -v
5. 提交前清单
- 语法有效(
py_compile) - 测试通过(
pytest) - 公开函数有类型注解
- 无硬编码密钥
- 用f-string,不用
.format()或% - 文件路径用
pathlib - I/O用上下文管理器
- 无可变默认参数
常见问题
Q1:免费版支持哪些Python版本?
支持Python 3.10及以上。建议新项目使用3.11-3.13。Python 2语法与模式永不推荐。
Q2:免费版是否支持类型注解?
支持基础类型注解(函数签名、返回类型)。深度类型规范、泛型、Protocol等进阶主题请使用PRO版。
Q3:依赖管理推荐用什么?
优先使用uv(更快、原生支持pyproject.toml)。无uv时回退pip。新项目建议用 uv init 初始化。
Q4:免费版与PRO版差异?
| 维度 | 免费版 | PRO版 |
|---|---|---|
| 规范覆盖 | PEP 8 + Pythonic | 全规范 + 类型系统 + 异步 + 性能 |
| 适用对象 | 个人开发者 | 团队与企业 |
| 测试策略 | 基础pytest | 完整测试金字塔 + 覆盖率门禁 |
| 异步支持 | 不支持 | asyncio完整最佳实践 |
| 团队治理 | 不支持 | 规则分级 + CI门禁 |
| 支持 | 社区支持 | 优先支持 |
Q5:ruff和black冲突吗?
不冲突。建议用ruff的format替代black(ruff内置Black兼容格式化),或用 ruff check + black 组合(此时需配置 ruff 不检查格式规则)。
依赖说明
运行环境
- Agent平台: 支持SKILL.md的任意AI Agent(Claude Code / Cursor / Codex / Gemini CLI等)
- 操作系统: Windows / macOS / Linux
- Python版本: 建议 3.11 及以上
第三方依赖
| 依赖项 | 类型 | 是否必需 | 获取方式 |
|---|---|---|---|
| LLM API | API | 必需 | 由Agent内置LLM提供 |
| Python | 运行时 | 必需 | python.org 下载 |
| ruff | 命令行工具 | 推荐 | pip install ruff 或 uv tool install ruff |
| pytest | 测试框架 | 推荐 | pip install pytest |
| uv | 包管理器 | 可选 | pip install uv 或 astral.sh 安装 |
API Key 配置
- 本skill基于Markdown指令规范,无需额外API Key(除内容中明确标注的外部API)。
- 个人项目依赖通过pip/uv从PyPI获取,无需API Key。
可用性分类
- 分类: MD+EXEC(纯Markdown指令,部分功能需exec命令行执行)
- 说明: 基于Markdown的AI Skill,通过自然语言指令驱动Agent完成操作。免费版聚焦个人开发者的PEP 8规范与Pythonic模式指导。
错误处理
| 错误场景 | 原因 | 处理方式 |
|---|---|---|
| 配置错误 | 参数缺失或格式错误 | 检查依赖说明中的配置要求 |
| 运行时错误 | 运行环境不满足 | 确认运行环境符合依赖说明 |
| 网络错误 | 连接超时或不可达 | 执行ping命令测试网络连通性,检查防火墙和代理设置连接后执行ping命令测试网络连通性,检查防火墙和代理设置连接后重新执行命令,参考国内替代方案 |
已知限制
- 需LLM支持,无LLM环境不可用
- 复杂业务场景建议结合人工经验判断
- 执行效率受模型能力与网络环境影响
输出格式
{
"success": true,
"data": {
"result": "Python工具箱(免费版)处理结果",
"execution_time": "0.5s",
"metadata": {
"version": "1.0",
"processor": "pythonkit"
}
},
"execution_log": ["解析输入参数", "执行核心处理", "格式化输出结果"],
"error": null
}
评论
加载中…