Python规范----PEP8
python规范—PEP8
导入
- 导入的时候一般遵循,标准库–》第三方库—》自定义库,并且之间有一行空格
- 导入部分和内容部分空两行
- 一行不要导入多个
内容
- 顶格内容之间都是需要加2行空行
- 全局变量一般使用全部大写或者全部小写,多个单词的时候使用下划线分割
- 逗号后面需要空一格,冒号也是左边不需要空格,右边空一格,分号也是,Python支持分号换行
- 等号等两元操作符前后都需要一个空格,% ==
- 方法名字后面紧跟着小括号,不需要加空格
- 方法定义完,第一句是文档注释’’’’’’
注释
- 左边至少2格
代码编排
- 推荐使用4个空格,代表着4个字符,不要tab和空格混合使用
- 制表符tab的长度不稳定,长度和配置相关,tab在所有编辑器里都是可以配置的,还有行长提醒的线,Python严格区分代码的缩进层级
- 行长80
结尾加空行,可以在编译器中配置
- 一个函数在一屏幕之内
import 中的 是指的all里面的东西
*代表解包,注意下划线可以作为变量:
1
2
3
4
5
6l = [1,2,3,4,5,6,7,8,9,0]
a,b, *_,c = l
#---------
结果:
a,b,c=(1,2,0)
_=[3,4,5,6,7,8,9]等号和is,is是用来判断内存地址的,使用id()可以查看,==判断值是否相等
编码规范
- PEP8 编码规范, 以及开发中的一些惯例和建议
- 代码编排:
- 缩进 4 个空格, 禁止空格与 Tab 混用
- 行长 80: 防止单行逻辑过于复杂
- import
- 不要使用
from xxx import *
- 顺序
- 标准库
- 第三方库
- 自定义库
- 单行不要 import 多个库
- 模块内用不到的不要去 import
- import * 其实是引入的all魔法函数中的内容
- 不要使用
- 空格
: , ;
后面跟一个空格, 前面无空格 (行尾分号后无空格)- 二元操作符前后各一个空格, 包括以下几类:
- 数学运算符:
+ - * / // = & |
- 比较运算符:
== != > < >= <= is not in
- 逻辑运算符:
and or not
- 位运算符:
& | ^ << >>
- 数学运算符:
- 当
=
用于指示关键字参数或默认参数值时, 不要在其两侧使用空格
- 适当添加空行
- 函数间: 顶级函数间空 2 行, 类的方法之间空 1 行
- 函数内: 同一函数内的逻辑块之间, 空 1 行
- 文件结尾: 留一个空行 (Unix 中 \n 是文件的结束符)
- 注释
- 忌: 逐行添加注释,没有一个注释
- 行内注释: 单行逻辑过于复杂时添加
- 块注释: 一段逻辑开始时添加
- 引入外来算法或者配置时须在注释中添加源连接, 标明出处
- 函数和类尽可能添加
docstring
- 命名
- 除非在 lambda 函数中, 否则不要用 单字母 的变量名 (即使是 lambda 函数中的变量名也应该尽可能的有意义)
- 包名、模块名、函数名、方法名全部使用小写, 单词间用下划线连接
- 类名、异常名使用 CapWords (首字母大写) 的方式, 异常名结尾加
Error
或Wraning
后缀 - 全局变量尽量使用大写, 一组同类型的全局变量要加上统一前缀, 单词用下划线连接
- 字符串拼接尽量使用
join
方式: 速度快, 内存消耗小,字符串是不可变的 - 语意明确、直白
not xx in yy
VSxx not in yy
not a is b
VSa is not b
- 程序的构建
- 一个函数只做一件事情, 并把这件事做好
- 大的功能用小函数之间灵活组合来完成
- 避免编写庞大的程序, “大” 意味着体积庞大, 逻辑复杂甚至混乱
- 推荐一个函数的长度不要超过一屏幕
- 函数名必须有动词, 最好是 do_something 的句式, 或者 somebody_do_something 句式
- 自定义的变量名、函数名不要与标准库中的名字冲突
- pip install pep8 pylint flake8
- 规范化这段代码
- 代码编排:
1 | import sys, os |