首页龙虾技能列表 › Python — Python开发指南

Python — Python开发指南

v1.0.0

提供 Python 编码指南、最佳实践和自动化工具,强制执行 PEP 8 风格、语法验证、单元测试执行、现代 Python 版本(不支持已结束支持的版本)、uv 依赖管理(若可用)和 Pythonic 模式。

8· 8,500·93 当前·98 累计
by @adarshdigievo (Adarsh Divakaran)·MIT-0
下载技能包
License
MIT-0
最后更新
2026/2/26
安全扫描
VirusTotal
无害
查看报告
OpenClaw
安全
high confidence
本技能仅提供指令,用于 Python 风格和用法指南,其要求和指令与此目的一致。
评估建议
本技能内部一致且安全,但在允许其运行 SKILL.md 中的命令前,请注意:推荐的运行时命令(pytest、py_compile、pip/uv 安装、创建/激活虚拟环境)将执行项目代码并可能从 PyPI 或其他注册表下载和安装包。请在隔离环境(容器或可丢弃的虚拟环境)中运行这些命令,审查代理计划安装的包名,并避免在敏感主机上进行自动网络安装。如果允许自主调用,请确保代理仅在安全上下文中运行测试和安装。...
详细分析 ▾
用途与能力
名称/描述(PEP8、py_compile、pytest、依赖管理)与 SKILL.md 命令和推荐一致,不请求无关的凭据、二进制文件或系统路径。
指令范围
指令仅限于 linting/格式化、语法检查、运行测试和依赖管理(uv/pip/venv)。这是编码指南技能的预期行为,但某些指令(例如 pip 安装 <包>、uv 虚拟环境、运行测试)将执行代码并从网络下载包 — 因此,运行时操作可以修改环境或执行任意项目/测试代码,应在沙盒中或审查后运行。
安装机制
未提供安装规格(仅指令),因此技能本身不会将内容写入磁盘。这是最低风险模型,符合声明的目的。
凭证需求
技能未声明环境变量、凭据或配置路径。SKILL.md 未引用隐藏凭据或无关环境数据。
持久化与权限
always 为 false,技能由用户调用。它不请求持久/系统范围的权限或修改其他技能的配置。
安全有层次,运行前请审查代码。

License

MIT-0

可自由使用、修改和再分发,无需署名。

运行时依赖

无特殊依赖

版本

latestv1.0.02026/2/3

初始发布,提供 Python 编码指南和最佳实践。- 强制执行 PEP 8 风格和现代 Pythonic 模式。- 需要 Python 3.10+,推广使用 Python 3.11-3.13 的功能。- 包括语法验证、单元测试执行和提交前自动格式化。- 推荐使用 uv 进行依赖管理(若可用),否则使用 pip。- 记录清晰的 Pythonic 模式、反模式和测试实践。- 提供简洁的代码准备和最佳实践清单。

● 无害

安装命令 点击复制

官方npx clawhub@latest install python
镜像加速npx clawhub@latest install python --registry https://cn.clawhub-mirror.com

技能文档

代码风格(PEP 8)

  • 缩进使用 4 个空格(绝不使用 Tab)
  • 最大行长度:88 字符(Black 默认)或 79(严格 PEP 8)
  • 顶层定义前两个空行,类内一个空行
  • 导入顺序:标准库 → 第三方 → 本地,各组内按字母排序
  • 函数/变量使用 snake_case,类使用 PascalCase,常量使用 UPPER_CASE

提交前检查

# 语法检查(必须)
python -m py_compile .py

# 运行测试(如有) python -m pytest tests/ -v 2>/dev/null || python -m unittest discover -v 2>/dev/null || echo "No tests found"

# 格式检查(如可用) ruff check . --fix 2>/dev/null || python -m black --check . 2>/dev/null

Python 版本

  • 最低要求: Python 3.10+(3.9 于 2025 年 10 月 EOL)
  • 目标版本: 新项目使用 Python 3.11-3.13
  • 绝不使用 Python 2 语法或模式
  • 使用现代特性:match 语句、海象运算符、类型提示

依赖管理

优先检查 uv,回退到 pip:

# 优先使用 uv(如可用)
if command -v uv &>/dev/null; then
    uv pip install 
    uv pip compile requirements.in -o requirements.txt
else
    pip install 
fi

新项目使用 uv:uv inituv venv && source .venv/bin/activate

Pythonic 模式

# ✅ 列表/字典推导式优于循环
squares = [x2 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 # 交换

# ✅ EAFP 优于 LBYL try: value = d[key] except KeyError: value = default

# ✅ f-string 格式化 msg = f"Hello {name}, you have {count} items"

# ✅ 类型提示 def process(items: list[str]) -> dict[str, int]: ...

# ✅ dataclasses/attrs 用于数据容器 from dataclasses import dataclass

@dataclass class User: name: str email: str active: bool = True

# ✅ pathlib 优于 os.path from pathlib import Path config = Path.home() / ".config" / "app.json"

# ✅ enumerate、zip、itertools for i, item in enumerate(items): ... for a, b in zip(list1, list2, strict=True): ...

需要避免的反模式

# ❌ 可变默认参数
def bad(items=[]):  # Bug:跨调用共享
    ...
def good(items=None):
    items = items or []

# ❌ 裸 except try: ... except: # 会捕获 SystemExit、KeyboardInterrupt ... except Exception: # 更好 ...

# ❌ 全局状态 # ❌ from module import # ❌ 循环中字符串拼接(使用 join) # ❌ == None(使用 is None) # ❌ len(x) == 0(使用 not x

测试

  • 使用 pytest(推荐)或 unittest
  • 测试文件命名 test_.py,测试函数命名 test_*
  • 专注于单元测试,模拟外部依赖
  • 每次提交前运行:python -m pytest -v

文档字符串

def fetch_user(user_id: int, include_deleted: bool = False) -> User | None:
    """从数据库按 ID 获取用户。
    
    Args:
        user_id: 唯一用户标识符。
        include_deleted: 如果为 True,包含软删除的用户。
    
    Returns:
        找到则返回 User 对象,否则返回 None。
    
    Raises:
        DatabaseError: 如果连接失败。
    """

快速检查清单

  • [ ] 语法有效(py_compile
  • [ ] 测试通过(pytest
  • [ ] 公共函数有类型提示
  • [ ] 无硬编码秘密
  • [ ] 使用 f-string,而非 .format()%
  • [ ] 文件路径使用 pathlib
  • [ ] I/O 使用上下文管理器
  • [ ] 无可变默认参数
数据来源:ClawHub ↗ · 中文优化:龙虾技能库
OpenClaw 技能定制 / 插件定制 / 私有工作流定制

免费技能或插件可能存在安全风险,如需更匹配、更安全的方案,建议联系付费定制

了解定制服务