PEP8

每级缩进用4个空格

  • Yes
# 对准左括号
foo = long_function_name(var_one, var_two,
                         var_three, var_four)

# 不对准左括号,但加多一层缩进,以和后面内容区别。
def long_function_name(
        var_one, var_two, var_three,
        var_four):
    print(var_one)

# 悬挂缩进必须加多一层缩进.
foo = long_function_name(
    var_one, var_two,
    var_three, var_four)
    
    
# if语句跨行时,推荐额外添加缩进。
if (this_is_one_thing
        and that_is_another_thing):
    do_something()
  • No
# 不使用垂直对齐时,第一行不能有参数。
foo = long_function_name(var_one, var_two,
    var_three, var_four)

# 参数的缩进和后续内容缩进不能区别。
def long_function_name(
    var_one, var_two, var_three,
    var_four):
    print(var_one)

右边括号也可以另起一行。有两种格式,建议第2种

# 右括号不回退,个人不推荐
my_list = [
    1, 2, 3,
    4, 5, 6,
    ]
result = some_function_that_takes_arguments(
    'a', 'b', 'c',
    'd', 'e', 'f',
    )

# 右括号回退
my_list = [
    1, 2, 3,
    4, 5, 6,
]
result = some_function_that_takes_arguments(
    'a', 'b', 'c',
    'd', 'e', 'f',
)

空格或Tab?

  • 空格是首选的缩进方法
  • Tab仅仅在已经使用tab缩进的代码中为了保持一致性而使用。
  • Python3 中不允许混合使用Tab和空格缩进
  • Python2 的包含空格与Tab和空格缩进的应该全部转为空格缩进。

空行

  • 两行空行分割顶层函数和类的定义。
  • 类的方法定义用单个空行分割。
  • 额外的空行可以必要的时候用于分割不同的函数组,但是要尽量节约使用。
  • 额外的空行可以必要的时候在函数中用于分割不同的逻辑块,但是要尽量节约使用。

源文件编码

  • 在核心Python发布的代码应该总是使用UTF-8(ASCII在Python 2)。
  • Python 3(默认UTF-8)不应有编码声明。

导入在单独行

  • Yes
import os
import sys
from subprocess import Popen, PIPE
  • No
import sys, os
  • 导入始终在文件的顶部,在模块注释和文档字符串之后,在模块全局变量和常量之前。
  • 导入顺序如下:标准库进口,相关的第三方库,本地库。各组的导入之间要有空行。

禁止使用通配符导入。

通配符导入(from import *)应该避免,因为它不清楚命名空间有哪些名称存,混淆读者和许多自动化的工具。

字符串引用

  • Python中单引号字符串和双引号字符串都是相同的。注意尽量避免在字符串中的反斜杠以提高可读性。
  • 根据PEP 257, 三个引号都使用双引号

命名

  • 变量名和函数名
    用下划线命名。
  • 类名
    类名用大写字母开头的驼峰命名
  • 包和模块名
    模块名要简短,全部用小写字母,可使用下划线以提高可读性。包名和模块名类似,但不推荐使用下划线。

你可能感兴趣的:(PEP8)