首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python3 PEP8 编码规范

PEP8 是 Python 的一套编码规范,可从官方文档中查看详细的内容https://www.python.org/dev/peps/pep-0008/

呃(⊙o⊙)… 好了,知道你们懒、英语还烂。。。所以这里有人整理出一份官方的简洁版

PEP8 Python 编码规范整理

决定开始Python之路了,利用业余时间,争取更深入学习Python。编程语言不是艺术,而是工作或者说是工具,所以整理并遵循一套编码规范是十分必要的。所以今天下午我根据PEP 8整理了一份,以后都照此编码了,还会持续更新。

一、 代码编排

4个空格的缩进(编辑器都可以完成此功能),不使用Tap,更不能混合使用Tap和空格。

每行最大长度79,换行可以使用反斜杠,最好使用圆括号。换行点要在操作符的后边敲回车。

类和top-level函数定义之间空两行;类中的方法定义之间空一行;函数内逻辑无关段落之间空一行;其他地方尽量不要再空行。

二、 文档编排

模块内容的顺序:模块说明和docstring—import—globals&constants—其他定义。其中import部分,又按标准、三方和自己编写顺序依次排放,之间空一行。

不要在一句import中多个库,比如import os, sys不推荐。

如果采用from XX import XX引用库,可以省略‘module.’,都是可能出现命名冲突,这时就要采用import XX。

三、 空格的使用

总体原则:

避免不必要的空格

各种右括号前不要加空格。

逗号、冒号、分号前不要加空格。

函数的左括号前不要加空格。如Func(1)。

序列的左括号前不要加空格。如list[2]。

操作符左右各加一个空格,不要为了对齐增加空格。

函数默认参数使用的赋值符左右省略空格。

不要将多句语句写在同一行,尽管使用‘;’允许。

if/for/while语句中,即使执行语句只有一句,也必须另起一行。

四、 注释

总体原则:

错误的注释不如没有注释。所以当一段代码发生变化时,第一件事就是要修改注释!

注释必须使用英文,最好是完整的句子,首字母大写,句后要有结束符,结束符后跟两个空格,开始下一句。如果是短语,可以省略结束符。

块注释,在一段代码前增加的注释。在‘#’后加一空格。段落之间以只有‘#’的行间隔。比如:

行注释,在一句代码后加注释。比如:,但是这种方式尽量少使用。

避免无谓的注释。

五、 文档描述

为所有的共有模块、函数、类、方法写docstrings;非共有的没有必要,但是可以写注释(在def的下一行)。

如果docstring要换行,参考如下例子,详见PEP 257

"""Return a foobang

Optional plotz says to frobnicate the bizbaz first.

"""

六、 命名规范

总体原则:

新编代码必须按下面命名风格进行,现有库的编码尽量保持风格。

尽量单独使用小写字母‘l’,大写字母‘O’等容易混淆的字母。

模块命名尽量短小,使用全部小写的方式,可以使用下划线。

包命名尽量短小,使用全部小写的方式,不可以使用下划线。

类的命名使用CapWords的方式,模块内部使用的类采用_CapWords的方式。

异常命名使用CapWords+Error后缀的方式。

全局变量尽量只在模块内有效,类似C语言中的static。实现方法有两种,一是all机制;二是前缀一个下划线。

函数命名使用全部小写的方式,可以使用下划线。

常量命名使用全部大写的方式,可以使用下划线。

类的属性(方法和变量)命名使用全部小写的方式,可以使用下划线。

类的属性有3种作用域public、non-public和subclass API,可以理解成C++中的public、private、protected,non-public属性前,前缀一条下划线。

类的属性若与关键字名字冲突,后缀一下划线,尽量不要使用缩略等其他方式。

为避免与子类属性命名冲突,在类的一些属性前,前缀两条下划线。比如:类Foo中声明a,访问时,只能通过Foo._Fooa,避免歧义。如果子类也叫Foo,那就无能为力了。

类的方法第一个参数必须是self,而静态方法第一个参数必须是cls。

七、 编码建议

编码中考虑到其他python实现的效率等问题,比如运算符‘+’在CPython(Python)中效率很高,都是Jython中却非常低,所以应该采用.join()的方式。

尽可能使用‘is’‘is not’取代‘==’,比如if x is not None 要优于if x。

使用基于类的异常,每个模块或包都有自己的异常类,此异常类继承自Exception。

异常中不要使用裸露的except,except后跟具体的exceptions。

异常中try的代码尽可能少。比如:

要优于

使用startswith() and endswith()代替切片进行序列前缀或后缀的检查。比如

使用isinstance()比较对象的类型。比如

判断序列空或不空,有如下规则

字符串不要以空格收尾。

二进制数据判断使用 的方式。

来源bobo的日记:http://blog.sae.sina.com.cn/archives/4781

极客点儿使用的编码规范

当然,任何规范都是为了将团队的编码统一标准化。所以在不违背 PEP8 编码规范的前提下,极客点儿为了开发效率和编程习惯,将一些规范细化或扩展。

一、命名规范1. 变量

小写字母和下划线命名

2. 常量

大写字母和下划线命名

3. 函数

小驼峰命名法

4. 类名

大驼峰命名法

5. 属性

小写字母和下划线命名

以 开头属于私有属性

6. 方法

小驼峰命名法

以 开头属于私有方法

7. 包

全小写命名

8. 模块

全小写命名

二、目录和文件规范1. 目录

驼峰命名法

2. 文件

统一以 为后缀

小写字母和下划线命名

类名和类文件名保持一致

三、编码规范1. 解释器

指定从 环境变量中来查找 解释器的位置

2. 编码

指定 编码

3. 缩进

统一使用4个空格进行缩进

4. 空格

在二元运算符两边各空一格

函数的参数列表中,之后要有空格

函数的参数列表中,默认值等号两边不要添加空格

左括号之后,右括号之前不要加多余的空格

字典对象的左括号之前不要多余的空格

不要为对齐赋值语句而使用的额外空格

5. 换行

使用反斜杠 换行

二元运算符 、 等应出现在行末

长字符串也可以用此法换行

6. 行宽

每行代码不超过 79 个字符

7. 引号

字符串使用双引号

机器标识使用单引号

正则表达式使用原生的双引号

文档字符串使用三个双引号

8. 空行

引入模块后空两行

模块级函数和类定义之间空两行

类成员函数之间空一行

可以使用多个空行分隔多组相关的函数

函数中可以使用空行分隔出逻辑相关的代码

9. import

语句应该分行书写

10. 注释

块注释

后空一格

段落用空行分开

行注释

至少使用两个空格和语句分开

不要使用无意义的注释

11. 文档字符串(docstring)

所有的公共模块、函数、类、方法,都应该写

私有方法不一定需要,但应该在 后提供一个块注释来说明

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180222G00PDM00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券