PEP8 - 代码规范
Posted ls-2018
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PEP8 - 代码规范相关的知识,希望对你有一定的参考价值。
- 缩进(indentation):使用四个空格表示每个缩进级别
# 使用开分隔符(opening delimiter)进行对齐 foo = long_func_name(var_one, var_two, var_three, var_four) # 使用更多的缩进以和其他的代码单元区别开来 # 如下例的,参数部分比函数体多四个缩进以和函数体进行区别 def long_func_name( var_one, var_two, var_three, var_four) print(var_one) # 悬挂缩进(hanging indents):增加一个缩进级别 foo = long_func_name( var_one, var_two, var_three, var_four) # 或者: foo = long_func_name( var_one, var_two, var_three, var_four ) a = [1, 2, 3, 4, 5, 6] a = [ 1, 2, 3, 4, 5, 6 ]
- 最大行长度(所有行的最大长度均为79个字符)
- 正确的换行位置。推荐在二元操作符(
and
、or
以及%
)之后。class Rectangle(Shape): def __init__(self, width, height, color=‘black‘, emphasis=None, highlight=0): if (width == 0 and height == 0 and color == ‘red‘ and emphasis == ‘strong‘ or height > 100): raise ValueError("sorry, you lose") if width == 0 and height == 0 and (color == ‘red‘ or emphasis is None): raise ValueError("I don‘t think so -- values are %s, %s" % (width, height)) Shape.__init__(self, width, height, color, emphasis, highlight)
- 空行
-
顶级函数(当前文件中的第一个函数)或者顶级类(当前文件的第一个类)之前要有两个空行
- 定义在类内部的函数(成员函数)之间要留有一个空行
- 可以使用额外的空行(但要注意节制)以区分不同的函数组
- 在一堆只有一行的函数之间不要使用空行(比如一些函数的空实现)
- 在函数内部使用空行,来标识不同的逻辑单元
-
- import
- 在独立的行引入独立的包
- 但从一个包中添加不同的模块或者函数也是允许的
- import文件应当总是位于文件的首部,仅在模块备注和文档之后,在模块的全局变量和常量之前的位置
- import文件的顺序
- 标准库(sys, os)
- 相关的第三方库(numpy, pandas, matplotlib)
- 自定义的.py文件
- 以组的形式标识上述三种import文件,也即是用一个空行隔开
- 推荐使用绝对路径包含,因为可读性更好,并且不易出错。
- 字符串
- 在python中,不对单引号和双引号作区分,PEP的代码规范也不对此有所推荐。任选其一,统一使用即可。然而,当一个字符串包含单引号或者双引号时,使用另外一种方式避免转义符(
\
)的使用,以提高可读性。
- 在python中,不对单引号和双引号作区分,PEP的代码规范也不对此有所推荐。任选其一,统一使用即可。然而,当一个字符串包含单引号或者双引号时,使用另外一种方式避免转义符(
- 表达式中的空格
- 在下述条件下,避免使用空格:
- 紧跟着大括号、中括号和小括号之前
- 紧连着逗号、分号、冒号之前
- 切片中的冒号
- 总是在如下的二元操作符的两边使用单空格:
- 赋值 : =
- 增量赋值 : +=
- 比较 :== < > != <> in is
- 布尔: and or not
- 不要使用空格,当被用来标识一个关键字参数(使用函数)或者一个默认参数赋值(定义函数)
- 文档
-
- 为所有公共模块或者函数、类以及方法编写文档。不必为非公共方法编写doc文档,但应有一个注释描述算法的功能,这条注释应当出现在def之后
- 结尾的"""应当独占一行
以上是关于PEP8 - 代码规范的主要内容,如果未能解决你的问题,请参考以下文章
Pycharm配置autopep8教程,让Python代码更符合pep8规范