跳到正文
cccskills
免费在 GitHub 公开

python-dev

Python 开发规范。当用户操作 .py、pyproject.toml、requirements.txt、setup.py 文件, 或涉及 FastAPI、Django、Flask、pytest、asyncio 开发时触发。包含 PEP 8 风格、类型注解、异常处理、测试规范、异步编程、性能优化等。

中文简介正在准备中。当前显示原文说明。

查看安装方法

包含的文件(1)

  • SKILL.md3.6 KB

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。

Python 开发规范

参考来源: PEP 8、Google Python Style Guide


工具链

black .                              # 代码格式化
isort .                              # import 排序
mypy .                               # 静态类型检查
ruff check .                         # 快速 linter(推荐)
pytest -v                            # 运行测试
pytest --cov=src                     # 覆盖率

命名约定

类型规则示例
模块/包小写下划线user_service.py
类名大驼峰UserService, HttpClient
函数/变量小写下划线get_user_by_id, user_name
常量全大写下划线MAX_RETRY_COUNT
私有单下划线前缀_internal_method

类型注解

from typing import Optional, List, Dict
from dataclasses import dataclass

@dataclass
class User:
    id: int
    name: str
    email: Optional[str] = None

def find_user_by_id(user_id: int) -> Optional[User]:
    ...

# Python 3.10+ 可用新语法
def greet(name: str | None = None) -> str:
    return f"Hello, {name or 'World'}"

异常处理

# ✅ 好:捕获具体异常
try:
    user = repository.find_by_id(user_id)
except DatabaseError as e:
    logger.error(f"Failed to find user {user_id}: {e}")
    raise ServiceError(f"Database error: {e}") from e

# ✅ 好:上下文管理器
with open("file.txt", "r") as f:
    content = f.read()

# ❌ 差:裸 except
try:
    do_something()
except:
    pass

测试规范(pytest)

import pytest
from unittest.mock import Mock

class TestUserService:
    @pytest.fixture
    def user_service(self):
        repository = Mock()
        return UserService(repository)

    def test_find_by_id_returns_user(self, user_service):
        expected = User(id=1, name="test")
        user_service.repository.find_by_id.return_value = expected
        result = user_service.find_by_id(1)
        assert result == expected

# 参数化测试
@pytest.mark.parametrize("input,expected", [
    (1, 1), (2, 4), (3, 9),
])
def test_square(input, expected):
    assert square(input) == expected

异步编程

import asyncio

async def fetch_user(user_id: int) -> User:
    async with aiohttp.ClientSession() as session:
        async with session.get(f"/api/users/{user_id}") as response:
            data = await response.json()
            return User(**data)

# 限制并发数
async def fetch_with_limit(user_ids: list[int], limit: int = 10) -> list[User]:
    semaphore = asyncio.Semaphore(limit)
    async def fetch_one(uid: int) -> User:
        async with semaphore:
            return await fetch_user(uid)
    return await asyncio.gather(*[fetch_one(uid) for uid in user_ids])

性能优化

场景方案
大数据处理使用生成器 yield
字符串拼接使用 ''.join()
查找操作使用 set 或 dict
并发 I/O使用 asyncio
CPU 密集使用 multiprocessing

项目结构

project/
├── src/
│   └── myproject/
│       ├── __init__.py
│       ├── models/
│       ├── services/
│       └── utils/
├── tests/
│   ├── conftest.py
│   └── test_*.py
├── pyproject.toml
└── README.md

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

同一仓库的技能

当设计或修改 REST API 响应结构、处理 API 返回值时触发。防止 API 设计缺陷导致的字段错位、类型歧义等问题。

中文简介正在准备中。当前显示原文说明。

doccker/cc-use-exp10652026年8月26日 更新

当设计或修改 REST API 响应结构、处理 API 返回值,或生成 Excel/CSV/PDF/对账文件等下游产物时触发。防止 API 设计缺陷导致的字段错位、类型歧义,以及生成产物时关键字段缺失但静默成功的问题。

中文简介正在准备中。当前显示原文说明。

doccker/cc-use-exp10652026年8月26日 更新

网关/代理/WAF/CDN 中间件的安全关键词匹配实现规范,防止纯子串匹配误判正常响应内容中的技术术语(如 Cloudflare、502、error)

中文简介正在准备中。当前显示原文说明。

doccker/cc-use-exp10652026年8月26日 更新

当 API/任务可能执行超过 10 秒(批量数据处理、远程 API 批量调用、全表扫描、跨租户聚合)时触发。防止同步接口被网关 30s 超时切断、用户重复点击触发并发、状态缓存内存泄漏等问题。提供异步任务状态机标准模板。

中文简介正在准备中。当前显示原文说明。

doccker/cc-use-exp10652026年8月26日 更新

当用户操作 .sh、Dockerfile、Makefile、.yml、.yaml 文件,或在 Markdown 中编写 bash 代码块时触发。提供 Bash 编写规范。

中文简介正在准备中。当前显示原文说明。

doccker/cc-use-exp10652026年8月26日 更新

Bash 脚本与系统命令规范。禁止行尾注释,强制使用 tee/heredoc 写入,提升命令执行的可维护性。

中文简介正在准备中。当前显示原文说明。

doccker/cc-use-exp10652026年8月26日 更新

查看 doccker 的全部技能

报告此技能的问题