Python代码规范(命名、注释等)
本来不应该把这个章节放在前⾯的,因为还没进⾏学习之前,直接看这个章节,会感觉有很多莫名其妙的东西。
但是把这个章节放在前⾯的⽤意,只是让⼤家预览⼀下,有个印象,⽽且在以后的学习中,也⽅便⼤家查阅。
⽬录
⼀、简明概述
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、空⾏
模块级函数和类定义之间空两⾏;
类成员函数之间空⼀⾏;
可以使⽤多个空⾏分隔多组相关的函数
函数中可以使⽤空⾏分隔出逻辑相关的代码
3、import 语句
import 语句应该分⾏书写
# 正确的写法
import os
import sys
# 不推荐的写法
import sys,os
# 正确的写法
from subprocess import Popen, PIPE
import语句应该使⽤absoluteimport
# 正确的写法
from foo.bar import Bar
# 不推荐的写法
from ..bar import Bar
import语句应该放在⽂件头部,置于模块说明及docstring之后,于全局变量之前;import语句应该按照顺序排列,每组之间⽤⼀个空⾏分隔
导⼊其他模块的类定义时,可以使⽤相对导⼊
from myclass import MyClass
如果发⽣命名冲突,则可使⽤命名空间
4、空格
在⼆元运算符两边各空⼀格[=,-,+=,==,>,in,is not, and]:
函数的参数列表中,,之后要有空格
函数的参数列表中,默认值等号两边不要添加空格
左括号之后,右括号之前不要加多余的空格
5、换⾏
Python ⽀持括号内的换⾏。这时有两种情况。
禁⽌复合语句,即⼀⾏中包含多个语句:
6、docstring
⼆、注释
1、注释
1.1、块注释
“#”号后空⼀格,段落件⽤空⾏分开(同样需要“#”号)
# 块注释
# 块注释
#
# 块注释
# 块注释
1.2、⾏注释
python中文文档⾄少使⽤两个空格和语句分开,注意不要使⽤⽆意义的注释
# 正确的写法
x = x + 1 # 边框加粗⼀个像素
# 不推荐的写法(⽆意义的注释)
x = x + 1 # x加1
1.3、建议
在代码的关键部分(或⽐较复杂的地⽅), 能写注释的要尽量写注释
⽐较重要的注释段, 使⽤多个等号隔开, 可以更加醒⽬, 突出重要性
2、⽂档注释(Docstring)
作为⽂档的Docstring⼀般出现在模块头部、函数和类的头部,这样在python中可以通过对象的__doc__对象获取⽂档. 编辑器和IDE也可以根据Docstring给出⾃动提⽰.
⽂档注释以 ''' 开头和结尾, ⾸⾏不换⾏, 如有多⾏, 末⾏必需换⾏, 以下是Google的docstring风格⽰例
不要在⽂档注释复制函数定义原型, ⽽是具体描述其具体内容, 解释具体参数和返回值等
# 不推荐的写法(不要写函数原型等废话)
def function(a, b):
'''function(a, b) -> list'''
... ...
# 正确的写法
def function(a, b):
'''计算并返回a到b范围内数据的平均值'''
... ...
对函数参数、返回值等的说明采⽤numpy标准, 如下所⽰
def func(arg1, arg2): '''在这⾥写函数的⼀句话总结(如: 计算平均值). 这⾥是具体描述. 参数 ---------- arg1 : int arg1的具体描述 arg2 : int arg2的具体描述返回值 ------- int 返回值的具体描述参看 -------- otherfunc : 其它关联函数等... ⽰例 -------- ⽰例使⽤doctest格式, 在`>>>`后的代码可以被⽂档测试⼯具作为测试⽤例⾃动运⾏
⽂档注释不限于中英⽂, 但不要中英⽂混⽤
⽂档注释不是越长越好, 通常⼀两句话能把情况说清楚即可
模块、公有类、公有⽅法, 能写⽂档注释的, 应该尽量写⽂档注释
三、命名规范
1、模块
模块尽量使⽤⼩写命名,⾸字母保持⼩写,尽量不要⽤下划线(除⾮多个单词,且数量不多的情况)
# 正确的模块名
import decoder
import html_parser
# 不推荐的模块名
import Decoder
2、类名
类名使⽤驼峰(CamelCase)命名风格,⾸字母⼤写,私有类可⽤⼀个下划线开头
将相关的类和顶级函数放在同⼀个模块⾥. 不像Java, 没必要限制⼀个类⼀个模块.
3、函数
函数名⼀律⼩写,如有多个单词,⽤下划线隔开4、变量名
变量名尽量⼩写, 如有多个单词,⽤下划线隔开5、常量
常量使⽤以下划线分隔的⼤写命名
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论