python 进阶(4) -- PEP8 规范


[HTML_REMOVED][HTML_REMOVED]你让我知道,触摸到头顶的天空是什么感觉[HTML_REMOVED][HTML_REMOVED]


前序

学了 python 也有一段时间了,现在在用着 python3,时间久了,也应该慢慢地精进一下,这里从 PEP8 的官网翻译整理一下,日后慢慢规范,当然也不能生搬硬套,一个标准而已

总的归结为如下几个方面: - 每个缩进层级使用 4 个空格 - 每行最多 79 个字符 - 采用 ASCII 或 UTF-8 编码文件 - 在文件顶端,注释和文档说明之下,每行每条 import 语句只导入一个模块,同时要按标准库、第三方库和本地库的导入顺序进行分组 - 在大中小之间或者逗号之前没有额外的空格 - 类的命名采用骆驼命名法(CameCase); 异常的定义使用 Error 前缀;函数的命名使用小写字符(separated_by_underscored)


缩进(Indentation)

最基本的:使用 4 个空格完成一个缩进,一个缩进为一个缩进等级(indent level)

当存在换行情况时,遵循下面缩进规范:

  1. 当第一行有参数时,对齐界定符排列(比如括号)
# Aligned with opening delimiter.
foo = long_function_name(var_one, var_two,
                         var_three, var_four)
  1. 悬挂缩进(hanging indent): 第一行没有参数
# Hanging indents should add a level.
foo = long_function_name(
    var_one, var_two,
    var_three, var_four)
  1. 成对的大中小括号(closing brace/bracket/parenthesis)可以写成多行格式,结束时对齐最后一行,也可以对齐开始行
my_list = [
    1, 2, 3,
    4, 5, 6,
    ]

my_list = [
    1, 2, 3,
    4, 5, 6,
]

Tabs or Spaces?

在 py3 中只能使用同一种风格,这个之后再解决,在复制黏贴的时候经常报错,还不知道是不是这个原因而且该怎样解决


最大行长度

所有的行最大长度为 79 个字符,所以需要在适当的时候进行换行处理

断行在操作符之前

income = (gross_wages
          + taxable_interest
          + (dividends - qualified_dividends)
          - ira_deduction
          - student_loan_interest)

Black Lines

  1. 最顶层的函数或类之间隔两个空行
  2. 定义在类里面的方法之间隔一个空行

Imports

  1. 同一行导入同一个库函数
import os
import sys
  1. 按照标准库、第三方库、本地库排序,中间使用一行空行隔开

空格

  1. 在大中小括号之间不要有空格
spam(ham[1], {eggs: 2})
  1. 在逗号之后加上小括号间不要空格
foo = (0,)
  1. 逗号、冒号、分号之前不要空格
if x == 4: print x, y; x, y = y, x
  1. 其他
Yes: spam(1)
No:  spam (1)
# Yes:

x = 1
y = 2
long_variable = 3

# No:

x             = 1
y             = 2
long_variable = 3
i = i + 1
submitted += 1
x = x*2 - 1
hypot2 = x*x + y*y
c = (a+b) * (a-b)
  1. 参数的赋值等号两边不要空格
def complex(real, imag=0.0):
    return magic(r=real, i=imag)

后续

暂时就整理这些,之后需要或者碰到新的再继续更新