温馨提示×

CentOS Python代码风格指南

小樊
42
2025-11-08 05:14:31
栏目: 编程语言

CentOS下遵循PEP 8的Python代码风格指南
PEP 8是Python官方推荐的代码风格指南,旨在提升代码可读性与一致性。在CentOS系统中,可通过工具辅助与规则落地实现规范的统一。

1. 工具安装与环境准备

在CentOS终端中,使用yum包管理器安装flake8(Python代码风格检查工具),快速检测代码是否符合PEP 8规范:

sudo yum install python3-flake8

安装后,可通过flake8 your_script.py命令检查指定文件的风格问题,或在项目中集成到CI/CD流程(如GitHub Actions)实现自动化验证。

2. 代码布局规范

缩进

  • 每级缩进使用4个空格,替代制表符(Tab);
  • 连续行(如长表达式、括号内内容)应与包裹元素对齐,或使用悬挂缩进(额外缩进4个空格)区分逻辑层次。
    正确示例:
    fo = dict(name='小数先生', age=18, city='hangzhou')
    def long_function_name(var_one, var_two, var_three):
        print(var_one)
    
    错误示例:
    fo = dict(name='小数先生', age=18, city='hangzhou')
    def long_function_name(var_one, var_two, var_three):
    print(var_one)  # 缩进不足
    

行长度限制

  • 普通代码行最大79字符,文档字符串/注释最大72字符
  • 长行优先使用括号隐式换行(而非反斜杠\),并将后续行缩进4个空格。
    正确示例:
    income = (gross_wages + taxable_interest + 
              (dividends - qualified_dividends) - ira_deduction)
    
    错误示例:
    income = gross_wages + taxable_interest + (dividends - qualified_dividends) - ira_deduction  # 超过79字符
    

空行

  • 顶层函数/类定义之间用2个空行分隔;
  • 类内方法定义之间用1个空行分隔;
  • 函数内逻辑段(如不同功能块)可用1个空行分隔(避免过度留白)。

3. 命名规范

  • 函数/变量/属性:使用小写字母+下划线(snake_case),如calculate_totaluser_name
  • 受保护实例属性:以单下划线开头(如_internal_var),表示“内部使用”(非强制私有);
  • 私有实例属性:以双下划线开头(如__private_var),触发名称改写(Name Mangling),避免子类命名冲突;
  • 类/异常:使用驼峰命名法(CamelCase),如UserAccountValueNotFoundError
  • 模块级常量:使用全大写字母+下划线(如MAX_RETRIESDEFAULT_TIMEOUT);
  • 方法参数:实例方法的第一个参数必须为self(表示对象本身),类方法的第一个参数必须为cls(表示类本身)。

4. 表达式与语句规范

  • 布尔判断:优先使用is/is not替代==/!=(如if x is not None,而非if x != None);
  • 容器空值判断:直接使用容器变量(如if somelist:),而非if len(somelist) == 0(Python中非空容器为True);
  • 循环与条件:避免将ifforwhileexcept复合语句写在一行(如if x > 0: print(x)不符合规范),应换行缩进。
    正确示例:
    if x is not None and y > 0:
        for item in items:
            print(item)
    
    错误示例:
    if x is not None and y > 0: print(x)  # 复合语句挤在一行
    

5. 导入规范

  • 分组与顺序:导入语句分为3组,每组之间用空行分隔,顺序为:
    1. 标准库导入(如import osimport sys);
    2. 第三方库导入(如import numpyimport requests);
    3. 本地应用/库导入(如from . import utilsfrom mymodule import MyClass);
  • 每行一个导入:避免import os, sys(降低可读性);
  • 绝对导入优先:使用from package import module(而非from .subpackage import module),除非项目结构复杂需用相对导入。

6. 注释与文档字符串规范

注释

  • 块注释:用于解释代码逻辑,缩进至与代码同级,每行以# 开头(#后跟1个空格);段落间用空行分隔。
    示例:
    # 计算订单总价(含税)
    # 参数:price(商品单价),quantity(数量),tax_rate(税率)
    total = price * quantity * (1 + tax_rate)
    
  • 行内注释:用于补充说明代码意图,与代码间隔至少2个空格,避免过度使用(如x = x + 1 # 增加x的值可简化为x += 1)。

文档字符串(Docstring)

  • 公共对象必写:为模块、函数、类、方法添加文档字符串(三引号"""),描述其功能、参数、返回值及异常;
  • 多行格式:首行简短总结,空一行,后续详细说明(结尾三引号单独成行)。
    示例:
    def calculate_discount(price, discount_rate):
        """计算商品折扣后的价格。
        
        Args:
            price (float): 商品原价。
            discount_rate (float): 折扣率(0~1之间的小数)。
        
        Returns:
            float: 折扣后价格。
        """
        return price * (1 - discount_rate)
    

7. 配置文件与团队协作

  • 项目根目录添加.flake8文件:定义flake8规则(如最大行长度、排除目录),确保团队风格一致。示例:
    [flake8]
    max-line-length = 88  # 根据项目需求调整(如88字符适配GitHub代码审查)
    exclude = .git,__pycache__,dist  # 排除无需检查的目录
    
  • 版本控制集成:将.flake8文件纳入Git版本控制,要求团队成员拉取代码后安装flake8并运行检查(flake8 .),将结果纳入代码审查流程。

0