Debian下的Python代码风格规范
一 核心规范 PEP 8
- 缩进与空格:统一使用4 个空格缩进,禁用Tab;二元运算符两侧各留1 个空格;逗号后留1 个空格;函数调用的左括号前不加空格;关键字参数或默认参数的等号两侧不加空格。
- 行长度与换行:代码行建议不超过79 个字符(注释/文档字符串建议不超过72);换行优先使用括号进行隐式续行,尽量避免反斜杠。
- 空行:顶层函数/类定义之间用2 个空行分隔;类内方法之间用1 个空行分隔。
- 导入规范:import 放在文件顶部,分组顺序为标准库 → 第三方库 → 本地模块,组间空一行;避免通配符导入(from module import *);每行仅导入1 个模块。
- 命名约定:模块/函数/变量用snake_case;类用PascalCase;常量用UPPER_WITH_UNDERSCORES;私有约定可用**单下划线 _**前缀(约定俗成,并非真正私有)。
- 注释与文档:使用**#进行行内注释;模块、函数、类需有docstring**(遵循PEP 257),注释应与代码保持同步更新。
二 Debian打包与工程实践要点
- 解释器与可执行脚本:Shebang 使用**#!/usr/bin/env python3**;确保脚本具备可执行权限(chmod +x);在 Debian 包构建环境中使用**/usr/bin/python3**等系统解释器路径。
- 编码与文件头:源文件使用UTF-8;为兼容旧工具可在文件头加入**# -- coding: utf-8 --**(现代环境通常可省略但仍建议保留)。
- 依赖与环境:使用venv/virtualenv隔离开发依赖;依赖用requirements.txt或Pipfile管理;在打包时通过debian/control的Build-Depends声明构建依赖(如 python3、python3-pip 等)。
- 质量保障:使用flake8/pylint做风格与潜在错误检查;用black/autopep8统一格式;引入pytest/unittest编写单元测试并尽量提高覆盖率;在 CI 中对每次提交执行检查与测试。
三 工具链与配置建议
- 风格检查与自动修复:使用flake8快速发现 PEP 8 问题;pylint做更深入的质量分析;black进行“一致化”的一键格式化;autopep8自动修复可修复项。
- 配置示例:
- 使用black时推荐设置行长为79/88(与团队/项目保持一致),并在编辑器保存时自动格式化。
- 使用flake8时常用忽略项:例如E203/W503(与 black 的空格规则可能冲突)、E501(行过长,交由 black 处理)。
- 使用pylint时可通过配置文件关闭与 black 冲突的规则,保持工具间一致性。
四 最小规范示例
"""示例模块:演示在 Debian 下的基本风格与布局。"""
import sys
from pathlib import Path
MAX_RETRIES = 3
class Downloader:
"""下载器示例类。"""
def __init__(self, url: str, dest: Path) -> None:
self.url = url
self.dest = dest
def fetch(self) -> bool:
"""执行下载,返回是否成功。"""
for _ in range(MAX_RETRIES):
return True
return False
def main(argv: list[str] | None = None) -> int:
"""命令行入口点。"""
args = argv if argv is not None else sys.argv[1:]
if not args:
print("Usage: script.py <url> <dest>", file=sys.stderr)
return 2
url, dest = args[0], Path(args[1])
downloader = Downloader(url=url, dest=dest)
ok = downloader.fetch()
print("OK" if ok else "FAIL")
return 0 if ok else 1
if __name__ == "__main__":
raise SystemExit(main())
- 要点对应:文件头声明UTF-8;Shebang 使用**/usr/bin/env python3**;顶层函数与类之间2 个空行、类内方法之间1 个空行;行宽不超过79;运算符与逗号空格使用正确;import 分组与顺序正确;避免分号;有docstring与必要注释。