1 PEP 8 的意义

《Python Enhancement Proposal 8》又叫 PEP 8,它是针对 Python 代码格式而编制的风格指南。 链接https://www.python.org/dev/peps/pep-0008/

  • 主要作用:

    • 有利于编写更加通俗易懂的代码
    • 有利于多人协作,有利于修改。

      2 几条重要的规则

      2.1 命名

  • 函数、变量以及属性应该用小写字母来拼写。

    1. def sum_a_+_b(int a, int b):
    2. ...
  • 与异常,应该以每个单词首字母大写的形式来命名。

    1. class SmallCar():
    2. ...
    3. #
    4. CapitalizedWord
  • 模块级别的常量,应该全部采用大写字母来拼写,各单词下划线连接。

    1. ALL_CAPS
  • 受保护的实例属性,应该以单个下划线开头。

    1. _leading_underscore
  • 私有的实例属性,应该以两个下划线开头。

    1. __double_leading_underscore

    2.2 空白

  • 每行不超过 79 个字符。

  • 在变量赋值的时候,赋值符号的左侧和右侧应该各自写上一个空格。
  • 文件中的 函数 和 类 之间应该用两个空行隔开。
  • 在同一个类中,各方法 之间应该用一个空行隔开。
  • 对于占据多行的长表达式来说,除了首行之外的其余各行都应该在通常的缩进级别之上再加4个空格。
  • 给变量的类型做注解(annotation)时,不要把变量名和冒号隔开,但在类型信息前应该有一个空格。

    2.3 表达式和语句

  • 不要用 if len(a) == 0 来判断 a 列表是否为空值。

    1. if not a: # 判断 a 是空
    2. ...
    3. if a: # 判断 a 不空
    4. ...
  • 采用内联形式的否定词,而不是把否定词放到整个表达式前面。

    1. if a is not b: # 推荐
    2. if not a is b: # 不推荐
  • 不要编写单行的 if 语句、for 循环、while 循环及 except 复合语句。

  • 多行的表达式,应该用括号括起来,而不要用 \ 符号续行。

    2.4 有关引入 import

  • import 语句(含 from x import y)总是放在文件开头。

  • import 语句根据顺序分为三个部分:
    • 标准库模块
    • 第三方模块
    • 自用模块
  • 引入模块时,总是应该使用绝对名称,而不应该根据当前模块路径而使用相对名称。
    • 例如,要引入 bar 包中的 foo 模块,应该完整地写出 from bar import foo,
    • 即便当前路径为 bar 包里,也不应该简写为 import foo 。
  • 如果一定要用相对名称来编写 import 语句,那就应该明确地写成:from . import foo 。
  • 在每一模块中,按照字母顺序排列。

    Pylint 流行的 Python 源码静态分析工具。 它可以自动检测受测代码是否符合 PEP 8 的风格。