PEP8-python编码风格

Python - PEP8 编码风格

参考文档:https://peps.python.org/pep-0008/

风格指南的核心在于一致性。与风格指南保持一致非常重要。项目内部的一致性更为重要。而模块或功能内部的一致性则尤为重要。

注意:不要为了遵循本PEP而破坏向后兼容性

忽略特定准则的其他一些充分理由:

  1. 应该改指南会降低代码的可读性,即使对于习惯阅读遵循此PEP的代码的人来说也是如此。
  2. 与周围的代码保持一致
  3. 当代码需要与不支持样式指南推荐的功能的旧版本Python保持兼容时

代码布局

缩进

每个缩进级别使用4个空格

续行应该垂直对齐换行元素,要么使用 Python 的圆括号、方括号和花括号内的隐式行连接,要么使用悬挂缩进 。使用悬挂缩进时应考虑以下几点:第一行不应包含任何参数,并且应使用进一步的缩进来清楚地将其与续行区分开来:

# Correct:

# Aligned with opening delimiter.
foo = long_function_name(var_one, var_two,
                         var_three, var_four)

# Add 4 spaces (an extra level of indentation) to distinguish arguments from the rest.
def long_function_name(
        var_one, var_two, var_three,
        var_four):
    print(var_one)

# Hanging indents should add a level.
foo = long_function_name(
    var_one, var_two,
    var_three, var_four)

制表符还是空格

空格是首选的缩进方法

制表符应该仅用于与已经使用制表符缩进的代码保持一致

Python不允许混合使用制表符和空格进行缩进

最大行长度

将所有行限制为最多79个字符

应该在二元运算符之前还是之后换行

遵循数学传统通常会产生更易读的代码:

# Correct:
# easy to match operators with operands
income = (gross_wages
          + taxable_interest
          + (dividends - qualified_dividends)
          - ira_deduction
          - student_loan_interest)

在 Python 代码中,允许在二元运算符之前或之后断行,只要约定在本地保持一致即可。对于新代码,建议采用 Knuth 的风格。

空行

用两行空行保卫顶级函数和类定义

类内的方法定义由一个空行包围

在函数中谨慎使用空行来指示逻辑部分

源文件编码

在标准库中,默认使用UTF-8编码,非UTF-8编码仅用于测试目的。谨慎使用非ASCII字符。

导入

import os
import sys

from subprocess import Popen, PIPE

导入应按一下顺序分组(每组导入之间放置一个空格):

  1. 标准库导入
  2. 相关第三方进口
  3. 本地应用程序/库特定的导入

字符串引号

在Python中,单引号和双引号字符串是相同的,

当字符串包含单引号或双引号字符时,请使用另一个引号,以避免字符串中出现反斜杠。这可以提高可读性。

表达式和语句中的空格

spam(ham[1], {eggs: 2})

foo = (0,)

if x == 4: print(x, y); x, y = y, x

在切片中,冒号的作用类似于二元运算符,两侧的空格数应相等(将其视为优先级最低的运算符)。在扩展切片中,两个冒号必须应用相同的空格数。例外:当省略切片参数时,空格也省略:

# Correct:
ham[1:9], ham[1:9:3], ham[:9:3], ham[1::3], ham[1:9:]
ham[lower:upper], ham[lower:upper:], ham[lower::step]
ham[lower+offset : upper+offset]
ham[: upper_fn(x) : step_fn(x)], ham[:: step_fn(x)]
ham[lower + offset : upper + offset]

注释

代码修改时,务必确保注释保持最新。

posted @ 2025-07-01 22:45  小郑[努力版]  阅读(14)  评论(0)    收藏  举报