pep8

PEP8是Python官方给出的编程规范,用以指导Python代码写作。

Pep8检查工具

autopep8可用于检查代码中与PEP8不相符的部分,通过指定-i选项可直接修改源代码。

pep8仅用于检测与PEP8不相符的代码部分并输出检测报告。

pyflakes可检测Python源码中简单的语法错误。

Pylint可同时检测Pep8的源码风格与语法错误。但对于一般小型脚本而言,检测标准过于严苛。

安装代码:

pip install -upgrade autopep8 pep8 pyflakes
sudo yum install pylint

PEP8风格介绍

完整的风格介绍参见:

PEP8–Style Guide for Python Code

PEP8–编程规范中文指南

本文仅记录较常错误的项。

续行缩进

悬挂缩进准则:第一行不应该包括参数,并且在续行中需要再缩进一级以便清楚表示。 正确范例:

# 同开始分界符(左括号)对齐
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)

错误的范例:

# 采用垂直对齐时第一行不应该有参数
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)

多行if语句

# 不采用额外缩进
if (this_is_one_thing and
    that_is_another_thing):
    do_something()

# 增加一行注释,在编辑器中显示时能有所区分
# supporting syntax highlighting.
if (this_is_one_thing and
    that_is_another_thing):
    # Since both conditions are true, we can frobnicate.
    do_something()

# 在条件语句的续行增加一级缩进
if (this_is_one_thing
        and that_is_another_thing):
    do_something()

多行结束右圆/方/花括号可以单独一行书写,和上一行的缩进对齐:

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',
)

Imports

不同组的imports之前用空格隔开