温馨提示×

Debian Python代码风格怎么规范

小樊
37
2025-12-07 02:43:59
栏目: 编程语言

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.txtPipfile管理;在打包时通过debian/controlBuild-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与必要注释。

0