Shadows Python Sensei

Polar Sponsor
爱发电 赞助
.NET 9.0

Python 最佳实践助手——代码规范、设计模式、性能优化、测试与类型注解。适用于编写或审查 Python 代码。

Python Sensei——最佳实践执行者.

功能概述

Python Sensei——最佳实践执行者.是一项面向实际任务的技能,主要用于Version: 1.1.0 QQ 作者:Shadows Company QQ 许可证:MIT.WHEN to TRIGGER.;WHEN 写新Python代码. 审查现有的Python代码.;

核心要点

  • User 说"Python Review".。
  • 它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
  • 使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。

使用与执行

从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。

结果检查与注意事项

执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。

Python Sensei — 最佳实践执行器

版本: 1.1.0 | 作者: Shadows Company | 许可证: MIT

触发时机

  • 编写新的 Python 代码时
  • 审查现有 Python 代码时
  • 用户输入 “python review”、“best practices” 或 “clean up this python” 等指令时
  • 重构 Python 模块时
  • 新建 Python 项目时

不触发时机

  • 质量无关紧要的快速脚本
  • 用户明确要求 “just make it work”
  • 非 Python 代码

前置依赖

需确保系统 PATH 中存在 pythonpython3,用于语法检查(python -m py_compile)和测试执行(python -m pytest)。

可选工具(自动检测,建议将据此动态调整):

  • pytest — 测试执行(pip install pytest
  • mypypyright — 静态类型检查
  • ruff — 快速 linting 与格式化(pip install ruff

该能力会检测用户环境中已安装的工具,并据此定制化推荐方案。

代码规范

1. 模块结构

"""模块文档字符串 — 一行描述其用途。"""

# 标准库导入
import os
from pathlib import Path

# 第三方库导入
import httpx
from pydantic import BaseModel

# 本地导入
from .config import Settings

# 常量
MAX_RETRIES = 3
DEFAULT_TIMEOUT = 30

# 模块主体代码...

规则

  • 单个模块最多 500 行 — 超出则拆分为多个专注功能的子模块
  • 导入分组:标准库 → 第三方库 → 本地模块(各组之间用空行分隔)
  • 常量置于模块顶部,命名使用 ALL_CAPS 格式
  • 复杂类应单独存放于一个文件中(即一文件一类)

2. 函数

async def fetch_user(user_id: str, *, include_profile: bool = False) -> User | None:
    """根据 ID 获取用户。

    Args:
        user_id: 用户唯一标识符。
        include_profile: 是否包含完整档案数据。

    Returns:
        若找到则返回 User 对象;否则返回 None。

    Raises:
        ConnectionError: 当 API 不可达时抛出。
    """

规则

  • 所有公开函数必须带完整类型提示(参数 + 返回值)
  • 为提升可读性,显式使用关键字参数(* 后的参数)
  • 当失败属于正常流程(而非异常情形)时,返回类型应包含 None
  • 仅对公开函数编写文档字符串(docstring)
  • 单个函数最多 30 行 — 超出则提取为辅助函数

3. 数据模型

from dataclasses import dataclass, field
from enum import StrEnum

class Status(StrEnum):
    ACTIVE = "active"
    INACTIVE = "inactive"
    PENDING = "pending"

@dataclass
class User:
    id: str
    name: str
    status: Status = Status.ACTIVE
    tags: list[str] = field(default_factory=list)

    def to_dict(self) -> dict:
        return {
            "id": self.id,
            "name": self.name,
            "status": self.status.value,
            "tags": self.tags,
        }

规则

  • 简单模型使用 @dataclass;验证逻辑繁重的模型优先选用 Pydantic
  • 状态枚举统一使用 StrEnum(支持 JSON 序列化)
  • 所有模型均须提供 to_dict() 方法以支持序列化
  • 默认设为不可变(必要时添加 frozen=True

4. 错误处理

# 推荐:捕获具体异常,try 块尽量精简
try:
    response = await client.get(url)
    response.raise_for_status()
except httpx.TimeoutException:
    logger.warning("Request timed out: %s", url)
    return None
except httpx.HTTPStatusError as e:
    logger.error("HTTP %d: %s", e.response.status_code, url)
    raise

# 禁止:捕获全部异常
try:
    do_everything()
except Exception:
    pass  # 切勿如此操作

规则

  • 必须捕获具体异常类型,禁止使用裸 except:
  • 仅在系统边界处进行校验(如用户输入、外部 API 响应)
  • 信任内部代码逻辑 — 不应在各处添加防御性检查
  • 错误输出统一使用 logging 模块,禁止使用 print()

5. 异步模式

import asyncio
import httpx

async def fetch_all(urls: list[str]) -> list[dict]:
    async with httpx.AsyncClient() as client:
        tasks = [client.get(url) for url in urls]
        responses = await asyncio.gather(*tasks, return_exceptions=True)
        return [r.json() for r in responses if not isinstance(r, Exception)]

规则

  • 资源管理统一使用 async with
  • I/O 并行操作统一使用 asyncio.gather()
  • 部分失败场景下应启用 return_exceptions=True
  • 禁止在同一函数内混用同步与异步 I/O

6. 测试

import pytest

class TestUserService:
    def test_create_user_with_valid_data(self):
        user = create_user(name="Alice", email="alice@example.com")
        assert user.name == "Alice"
        assert user.status == Status.ACTIVE

    def test_create_user_rejects_empty_name(self):
        with pytest.raises(ValueError, match="name cannot be empty"):
            create_user(name="", email="alice@example.com")

    @pytest.mark.asyncio
    async def test_fetch_user_returns_none_for_missing(self):
        result = await fetch_user("nonexistent-id")
        assert result is None

规则

  • 测试文件路径: tests/test_{module}.py
  • 测试方法名需清晰描述场景:test_[action]_[condition]_[expected]
  • 单个测试方法中建议只含一条断言(preferred)
  • 预期异常统一使用 pytest.raises
  • 共享初始化逻辑统一使用 fixture

7. 项目结构

project/
  src/
    project_name/
      __init__.py
      main.py
      config.py
      models.py
  tests/
    test_main.py
    test_models.py
  pyproject.toml
  requirements.txt
  .gitignore

使用 pyproject.toml 替代 setup.pyrequirements.txt 中固定主版本号。

需标记的反模式

反模式 修复方式
import * 显式导入所需符号
可变默认参数 field(default_factory=list)
全局可变状态 依赖注入(Dependency injection)
嵌套 try/except 提取逻辑并展平结构
字符串拼接构造 SQL 使用参数化查询(parameterized queries)
type() 类型检查 改用 isinstance()
os.path 改用 pathlib.Path
requests(同步) 改用 httpx(原生支持异步)

安全注意事项

本能力仅读写工作目录内的 Python 源文件,不会访问项目范围以外的任何文件。

  • 执行的命令:使用 python -m py_compile 进行语法检查,python -m pytest 执行测试。这些命令运行的是本地项目代码 —— 仅应在可信仓库或沙箱环境中使用。
  • 读取的数据:仅限工作目录下的源文件。不访问密钥、凭据或系统文件。
  • 网络访问:无需网络连接,全程离线运行。
  • 凭据:不存储、不访问任何凭据信息。
  • 持久化:所有修改仅作用于工作目录中的源文件,不更改任何全局配置。
  • 沙箱化:建议在虚拟环境(venv)中运行,以隔离依赖。

输出格式

代码审查结果与生成的代码均严格遵循上述规范。每次审查均需指出具体反模式及其所在行号,并附上修正后的代码块。

核心规则

  1. 全面启用类型提示 — 所有公开函数必须具备完整的类型注解
  2. 单模块上限 500 行 — 大型模块须拆分为职责更聚焦的子模块
  3. 每个模块必须配备测试 — 文件路径为 tests/test_{module}.py,测试名称需具描述性
  4. 默认采用异步 — 所有 I/O 操作均应使用异步实现
  5. 优先使用 pathlib — 使用 pathlib.Path 替代 os.path
  6. 禁用 print 调试 — 统一通过 logging 模块配合恰当日志级别进行调试输出

发布方:Shadows Company — “We work in the shadows to serve the Light.”

相关专题

更多
Python Django REST Framework接口安全与认证体系实践
Python Django REST Framework接口安全与认证体系实践

本专题围绕 Django REST Framework 展开,深入讲解 API 认证、JWT 鉴权、权限控制、接口安全防护以及防攻击策略设计。通过完整后端案例,帮助开发者构建安全可靠的 Web API 服务体系。

2026.06.29

140

15

Python FastAPI异步微服务与高性能接口设计
Python FastAPI异步微服务与高性能接口设计

本专题聚焦 Python FastAPI 框架在高性能接口与微服务开发中的应用,讲解异步请求处理、依赖注入机制、路由设计、数据库异步操作以及接口性能优化策略。结合实际项目案例,帮助开发者构建高并发、低延迟的现代化后端服务架构。

2026.06.16

219

12

Python数据分析实战指南
Python数据分析实战指南

聚焦Python在数据分析领域的核心应用,涵盖Pandas、NumPy、Matplotlib等库的使用技巧、真实业务场景案例及性能优化方法。

2026.06.04

146

48

Python入门零基础通关合集
Python入门零基础通关合集

从安装环境、变量循环到函数与类,专为小白设计的手把手Python教程,配套100道实战练习题,快速掌握自动化与数据分析基础。

2026.06.03

334

26

Python 设计模式与代码架构教程合集
Python 设计模式与代码架构教程合集

以 Python 语言特性为基础,讲解经典设计模式的 Pythonic 实现方式,涵盖单例模式(模块级/元类/new)、工厂模式与注册表模式、策略模式(函数作为一等公民替代类继承)、观察者模式(信号与事件系统)、装饰器模式(语言原生支持)、代理模式(getattr 动态代理)、依赖注入(dependency-injector 库)、仓储模式(Repository Pattern)在数据层的应用,同时讲解 Python 项目的分层架构(领

2026.05.15

424

19

Python日志系统与监控告警教程大全
Python日志系统与监控告警教程大全

全面讲解 Python 应用的日志管理与监控方案,涵盖 logging 标准库的 Logger/Handler/Formatter/Filter 体系、日志级别规范与分模块配置、dictConfig / fileConfig 声明式配置、loguru 第三方库的简洁用法与结构化输出、日志轮转(RotatingFileHandler/TimedRotatingFileHandler)策略、JSON 格式结构化日志输出、ELK / Loki

2026.05.15

186

27

Python数据库与ORM实践
Python数据库与ORM实践

全面讲解 Python 中数据库操作的技术方案,涵盖 sqlite3 标准库的轻量数据库操作、PyMySQL / psycopg2 连接 MySQL / PostgreSQL、DB-API 2.0 规范与游标操作、SQL 注入防范与参数化查询、SQLAlchemy Core 表达式语言与 ORM 模型定义/查询/关联关系映射、Alembic 数据库迁移管理、连接池(SQLAlchemy Pool / DBUtils)配置与调优、异步数据

2026.05.11

171

19

Python Web框架FastAPI 全栈开发教程合集
Python Web框架FastAPI 全栈开发教程合集

以 FastAPI 为核心,讲解现代 Python Web API 的高效开发方式,涵盖路由定义与路径参数/查询参数/请求体绑定、Pydantic 模型的数据校验与序列化、依赖注入(Depends)系统的分层设计、中间件与 CORS 配置、OAuth2 + JWT 认证流程、后台任务(BackgroundTasks)、WebSocket 实时通信、SQLAlchemy 异步 ORM 集成、自动生成 OpenAPI/Swagger 交互文

2026.05.09

316

23

Python多线程、多进程与并发编程教程大全
Python多线程、多进程与并发编程教程大全

系统讲解 Python 的并发与并行编程体系,涵盖 GIL 全局解释器锁的原理与影响分析、threading 模块的线程创建/锁/事件/信号量、multiprocessing 模块的进程创建/进程间通信(Queue/Pipe/共享内存)、concurrent.futures 线程池与进程池的统一接口、I/O 密集型与 CPU 密集型任务的方案选择、多线程竞态条件排查与线程安全数据结构、subprocess 子进程管理,帮助开发者根据任务

2026.05.08

114

32

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程