python代码规范标准_python代码规范为什么要有代码规范?
1.做哪⼀⾏都有⾼低级别之分,别写⼀⾏代码就被⼈鄙视了。
2.好的规范会形成好的编码风格,看着熟悉、亲切,⼼情好。
3.增加可读性,易维护,提⾼⼯作效率。
4.遵循规范,代码会⾃⼰写代码。
5.国家为啥要有法律,就是为了管理。
⼀、简明概述
1、编码
如⽆特殊情况, ⽂件⼀律使⽤ UTF-8 编码
如⽆特殊情况, ⽂件头部必须加⼊#-*-coding:utf-8-*-标识
2、代码格式
2.1、缩进
统⼀使⽤ 4 个空格进⾏缩进
2.2、⾏宽
每⾏代码尽量不超过 80 个字符(在特殊情况下可以略微超过 80 ,但最长不得超过 120)
理由:
这在查看 side-by-side 的 diff 时很有帮助
⽅便在控制台下查看代码
太长可能是设计有缺陷
2.3、引号
简单说,⾃然语⾔使⽤双引号,机器标⽰使⽤单引号,因此 代码⾥ 多数应该使⽤ 单引号
⾃然语⾔ 使⽤双引号 "..."
例如错误信息;很多情况还是 unicode,使⽤u"你好世界"
机器标识 使⽤单引号 '...'
例如 dict ⾥的 key
正则表达式 使⽤原⽣的双引号 r"..."
⽂档字符串 (docstring) 使⽤三个双引号 """......"""
2.4、空⾏
模块级函数和类定义之间空两⾏;
类成员函数之间空⼀⾏;
可以使⽤多个空⾏分隔多组相关的函数
函数中可以使⽤空⾏分隔出逻辑相关的代码
⽂件使⽤ UTF-8 编码
⽂件头部加⼊ # -*-conding:utf-8-*- 标识
3、import 语句
import 语句应该分⾏书写
import语句应该使⽤ absolute import
import语句应该放在⽂件头部,置于模块说明及docstring之后,于全局变量之前;
import语句应该按照顺序排列,每组之间⽤⼀个空⾏分隔
导⼊其他模块的类定义时,可以使⽤相对导⼊
如果发⽣命名冲突,则可使⽤命名空间
4、空格
在⼆元运算符两边各空⼀格[=,-,+=,==,>,in,is not, and]:
函数的参数列表中,,之后要有空格
函数的参数列表中,默认值等号两边不要添加空格
左括号之后,右括号之前不要加多余的空格
字典对象的左括号之前不要多余的空格
不要为对齐赋值语句⽽使⽤的额外空格
5、换⾏
Python ⽀持括号内的换⾏。这时有两种情况。
1) 第⼆⾏缩进到括号的起始处
2) 第⼆⾏缩进 4 个空格,适⽤于起始括号就换⾏的情形
使⽤反斜杠换⾏,⼆元运算符+ .等应出现在⾏末;长字符串也可以⽤此法换⾏
禁⽌复合语句,即⼀⾏中包含多个语句:
if/for/while⼀定要换⾏:
6、docstring
docstring 的规范中最其本的两点:
所有的公共模块、函数、类、⽅法,都应该写 docstring 。私有⽅法不⼀定需要,但应该在 def 后提供⼀个块注释来说明。docstring 的结束”“”应该独占⼀⾏,除⾮此 docstring 只有⼀⾏。
1、注释
1.1、块注释
“#”号后空⼀格,段落件⽤空⾏分开(同样需要“#”号)
1.2、⾏注释
⾄少使⽤两个空格和语句分开,注意不要使⽤⽆意义的注释
1.3、建议
在代码的关键部分(或⽐较复杂的地⽅), 能写注释的要尽量写注释
⽐较重要的注释段, 使⽤多个等号隔开, 可以更加醒⽬, 突出重要性
2、⽂档注释(Docstring)
作为⽂档的Docstring⼀般出现在模块头部、函数和类的头部,这样在python中可以通过对象的__doc__对象获取⽂档.编辑器和IDE也可以根据Docstring给出⾃动提⽰.
⽂档注释以 “”” 开头和结尾, ⾸⾏不换⾏, 如有多⾏, 末⾏必需换⾏, 以下是Google的docstring风格⽰例
不要在⽂档注释复制函数定义原型, ⽽是具体描述其具体内容, 解释具体参数和返回值等
对函数参数、返回值等的说明采⽤numpy标准, 如下所⽰
⽂档注释不限于中英⽂, 但不要中英⽂混⽤
⽂档注释不是越长越好, 通常⼀两句话能把情况说清楚即可
模块、公有类、公有⽅法, 能写⽂档注释的, 应该尽量写⽂档注释
三、命名规范
1、模块
模块尽量使⽤⼩写命名,⾸字母保持⼩写,尽量不要⽤下划线(除⾮多个单词,且数量不多的情况)
2、类名
类名使⽤驼峰(CamelCase)命名风格,⾸字母⼤写,私有类可⽤⼀个下划线开头
将相关的类和顶级函数放在同⼀个模块⾥. 不像Java, 没必要限制⼀个类⼀个模块.
3、函数
4、变量名
变量名尽量⼩写, 如有多个单词,⽤下划线隔开
常量采⽤全⼤写,如有多个单词,使⽤下划线隔开python新手代码你好
5、常量
常量使⽤以下划线分隔的⼤写命名
四. 主要命名规范
模块名采⽤⼩写字母并且以下划线分隔单词的形式;
包名应当简短,使⽤全⼩写,但是不要使⽤下划线
类名采⽤以⼤写字母开头,并且以⼤写字母分隔单词的形式命名(驼峰式命名);
全局或者类常量,全部使⽤⼤写字母,并且以下划线分隔单词;其余变量命名则是采⽤全部⼩写字母,并且以下划线分隔单词的形式命名。以上的内容如果是内部的,则使⽤下划线开头命名。
类型
公共(全局)
内部
模块名
lower_with_under
_ lower_with_under
包名
lowerwithoutunder
类名
CapWords
_ CapWords
异常名
CapWords
函数名
lower_with_under( )
_ lower_with_under( )
全局/类常量
CAPS_WITH_UNDER
_ CAPS_WITH_UNDER
全局/类变量
lower_with_under
_ lower_with_under
实例变量
lower_with_under
_ lower_with_under(单下划线私有)
__lower_with_under(双下划线避免与⼦类冲突)
⽅法名
lower_with_under( )
_ lower_with_under()(单下划线私有)
__lower_with_under()(双下划线避免与⼦类命名冲突)
函数/⽅法参数
lower_with_under
本地变量
lower_with_under
注:
1、from M import * 不会导⼊以下划线开始的对象。
2、异常也是⼀个类,所以需要遵循类名规则。但如果你的异常确实是个错误的话,请使⽤Error前缀
3、函数与⽅法参数设置时,使⽤self作为实例⽅法的第⼀个参数。使⽤cls作为类⽅法的第⼀个参数。当函数的参数名与保留字冲突时,使⽤下划线后缀(第⼆次提醒)。
4、⽅法名与实例变量设置时,在私有⽅法和实例变量前⽤单下划线前缀。使⽤双下划线前缀来调⽤"name mangling"来避免与⼦类命名冲突。如果类Foo有个属性叫__a,那么它不能使⽤Foo.__a读取,但仍然可以Foo._Foo__a来读取
5、应避免使⽤的命名:不要使⽤⼩写的L、⼤写的O、以及⼤写的I作为单字符变量名。__double_leading_and_trailing_underscore__:(双下划线开始和结束)存活在⽤户控制命名空间的"magic"对象或属性。例如__init__, __import__ 或 __file__。永远不要起这样的名字。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论