最近在继续学习python编程,代码敲完后一看:歪歪扭扭,显然很丑。于是把个人觉得需要留意的代码规范大概学习与整理一下。本文参考《Python Style Guide》。
一、代码布局
缩进
每一级缩进用4个空格。
最大行宽
限制所有行的最大行宽为79个字符;文本长块,如文档字符串或注释,行长度应限制在72个字符以内。
空行
两行空行分割顶层函数和类的定义;类的方法定义用单个空行分割;额外的空行可在必要时分割不同的函数组、函数中的逻辑块,但是要尽量节约使用。
源文件编码
在核心python发布的代码应该总是使用UTF-8。
导入
多个导入分行写,始终写在文件的顶部,在模块注释和文档字符串之后。
二、表达式和语句中的空格
- 逗号,冒号,分号之前避免空格
# Yes
if x == 4: print x, y; x, y = y, x
# No
if x == 4 : print x , y ; x , y = y , x
- 二元运算符两边放置一个空格:
涉及 =、符合操作符 ( += , -=等)、比较( == , < , > , != , <> , <= , >= , in , not in , is , is not )、布尔( and , or , not )。 - 优先级高的运算符或操作符的前后不建议有空格。
# Yes
i = i + 1
submitted += 1
x = x*2 - 1
hypot2 = x*x + y*y
c = (a+b) * (a-b)
# No
i=i+1
submitted +=1
x = x * 2 - 1
hypot2 = x * x + y * y
c = (a + b) * (a - b)
- 关键字参数和默认值参数的前后不要加空格
# Yes
def complex(real, imag=0.0):
return magic(r=real, i=imag)
# No
def complex(real, imag = 0.0):
return magic(r = real, i = imag)
- 函数注释中,=前后要有空格,冒号和"->"的前面无空格,后面有空格。
三、注释
如果注释很短,可以省略末尾的句号。注释块通常由一个或多个段落组成。段落由完整的句子构成且每个句子应该以点号(后面要有两个空格)结束,并注意断词和空格。
非英语国家的程序员请用英语书写你的注释,除非你120%确信代码永远不会被不懂你的语言的人阅读。
慎用行内注释。行内注释是和语句在同一行,至少用两个空格和语句分开。
文档字符串的惯例是一个多行字符串,默认规范是:首行以大写字母开始,句号结尾,第二行是空行,从第三行开始是详细的描述。
四、版本标签
版本注记 (Version Bookkeeping)
如果你必须在源文件中包含git、Subversion、CVS或RCS crud信息,放置在模块的文档字符串之后,任何其他代码之前,上下各用一个空行:
__version__ = "$Revision$"# $Source$
五、命名规范
多种命名风格:
-
b(单个小写字母)
-
B(单个大写字母)
-
lowercase(小写串)
-
lower_case_with_underscores(带下划线的小写)
-
UPPERCASE(大写串)
-
UPPER_CASE_WITH_UNDERSCORES(带下划线的大写串)
-
CapitalizedWords(首字母大写的单词串或驼峰缩写)tips: 使用大写缩写时,缩写使用大写字母更好。故 HTTPServerError 比 HttpServerError 更好。
-
mixedCase(混合大小写,第一个单词是小写)
-
Capitalized_Words_With_Underscores(带下划线,首字母大写,丑陋)
模块名要简短,全部用小写字母,可使用下划线以提高可读性。
实例方法第一个参数是 ‘self’。
类方法第一个参数是 ‘cls’。
常量通常在模块级定义,由大写字母用下划线分隔组成。比如MAX_OVERFLOW和TOTAL。