Files
code-review-skill/references/python.md
Tu Shaokun 9a4d4c4535 refactor: 模块化 skill 结构,支持按需加载
- 将 SKILL.md 从 1774 行精简到 ~180 行
- 新增 references/react.md:React 19、RSC、TanStack Query v5
- 新增 references/vue.md:Vue 3 Composition API
- 新增 references/rust.md:所有权、unsafe、异步
- 新增 references/typescript.md:类型安全、async/await
- 新增 references/python.md:常见陷阱
- 更新 README.md:说明按需加载机制

优化效果:
- 初始加载:~40K tokens → ~4K tokens
- 支持 Progressive Disclosure 按需加载
2025-11-29 13:39:43 +08:00

1.6 KiB
Raw Blame History

Python Code Review Guide

Python 代码审查指南,覆盖常见陷阱和最佳实践。


常见陷阱

可变默认参数

# ❌ Mutable default arguments
def add_item(item, items=[]):  # Bug! Shared across calls
    items.append(item)
    return items

# ✅ Use None as default
def add_item(item, items=None):
    if items is None:
        items = []
    items.append(item)
    return items

异常捕获过宽

# ❌ Catching too broad
try:
    result = risky_operation()
except:  # Catches everything, even KeyboardInterrupt!
    pass

# ✅ Catch specific exceptions
try:
    result = risky_operation()
except ValueError as e:
    logger.error(f"Invalid value: {e}")
    raise

可变类属性

# ❌ Using mutable class attributes
class User:
    permissions = []  # Shared across all instances!

# ✅ Initialize in __init__
class User:
    def __init__(self):
        self.permissions = []

Python Review Checklist

数据结构

  • 没有使用可变默认参数list、dict、set
  • 类属性不是可变对象
  • 理解浅拷贝和深拷贝的区别

异常处理

  • 捕获特定异常类型,不使用裸 except:
  • 异常信息有意义,便于调试
  • 必要时重新抛出异常(raise

性能

  • 大数据集使用生成器而非列表
  • 避免循环中重复创建对象
  • 使用 collections 模块的高效数据结构

代码风格

  • 遵循 PEP 8 风格指南
  • 使用类型注解type hints
  • 函数和类有 docstring