Python编码规范和最佳实践。编写、审查或重构代码时遵守:PEP 8风格、py_compile 语法检查、单元测试、仅使用未EOL的现代Python版本、uv 依赖管理(如有),以及 Pythonic 惯用写法。
Python 编码准则是一项面向实际任务的技能,主要用于代码样式( PEP 8). 4 缩进空格( 绝不设标签).;Max 线长: 88 个字符( 黑色默认) 或 79( 严格 PEP 8);
该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
# 语法检查(必须执行)
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
优先检查并使用 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 init 或 uv venv && source .venv/bin/activate
# ✅ 使用列表/字典推导式替代显式循环
squares = [x**2 for x in range(10)]
lookup = {item.id: item for item in items}
# ✅ 使用上下文管理器处理资源
with open("file.txt") as f:
data = f.read()
# ✅ 使用解包(unpacking)
first, *rest = items
a, b = b, a # 交换变量值
# ✅ EAFP 原则(Easier to Ask for Forgiveness than Permission),而非 LBYL(Look Before You Leap)
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=[]): # 错误:该列表在多次调用间共享
...
def good(items=None):
items = items or []
# ❌ 禁止裸 except(bare except)
try:
...
except: # 会捕获 SystemExit、KeyboardInterrupt 等不应捕获的异常
...
except Exception: # 更安全的做法
...
# ❌ 避免全局状态
# ❌ 禁止使用 from module import *
# ❌ 避免在循环中拼接字符串(应使用 ''.join())
# ❌ 禁止使用 == None(应使用 is None)
# ❌ 禁止使用 len(x) == 0(应使用 not x)
test_*.py,测试函数命名应为 test_*python -m pytest -vdef 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).format() 或 % 格式化pathlib 处理文件路径相关专题
热门下载
相关下载
精品课程
共0课时 | 0人学习
共0课时 | 0人学习
共0课时 | 0人学习
最新文章