Skip to content
cccskills
FreePublished on GitHub

python-dev

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

The English summary is being prepared. Showing the original description.

See how to install

Files included (1)

  • SKILL.md3.6 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

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

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

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

The English summary is being prepared. Showing the original description.

doccker/cc-use-exp1.1KUpdated Aug 26, 2026

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

The English summary is being prepared. Showing the original description.

doccker/cc-use-exp1.1KUpdated Aug 26, 2026

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

The English summary is being prepared. Showing the original description.

doccker/cc-use-exp1.1KUpdated Aug 26, 2026

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

The English summary is being prepared. Showing the original description.

doccker/cc-use-exp1.1KUpdated Aug 26, 2026

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

The English summary is being prepared. Showing the original description.

doccker/cc-use-exp1.1KUpdated Aug 26, 2026

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

The English summary is being prepared. Showing the original description.

doccker/cc-use-exp1.1KUpdated Aug 26, 2026

See all skills by doccker

Report a problem with this skill