写出优雅的代码,自己调试bug更加容易,也便于别人查看,下面谈谈一下让代码更加优雅的写法,主要是基于 PEP8。
1,缩进与换行,每级缩进使用4个空格。
1
2
3
4
5
6
7
8
9# yes: # 续行与其包裹元素要对齐 foo = long_function_name(var_one, var_two, var_three, var_four) # No: # 这种就不好 foo = long_function_name(var_one, var_two, var_three, var_four)
2,限制所有行的最大长度为 79 个字符。
3,空行。
顶层函数和类之间使用两个空行。
类的方法之间使用一个空行。
在函数中使用空行来表示不同的逻辑段落。
4,导入通常应当使用单独的行。
1
2
3
4
5
6
7# Yes: import os import sys # No: import sys, os 但是可以这么做: from subprocess import Popen, PIPE
导入总是位于文件的顶部,在模块注释和文档字符串之后,在模块的全局变量与常量之前。
导入应该按照以下的顺序分组:
standard library imports 标准库导入
related third party imports 相关第三方导入
local application/library specific imports 本地应用程序/库的特定导入
每组导入之间使用空行隔开。
从一个包含类的模块中导入类时,常常这么写:
from myclass import MyClass
from foo.bar.yourclass import YourClass
5,下面的情况,避免多余空格。
紧贴着圆括号、方括号和花括号:
1
2
3Yes: spam(ham[1], {eggs: 2}) No: spam( ham[ 1 ], { eggs: 2 } )
紧贴在逗号,分号或冒号之前:
1
2
3Yes: if x == 4: print x, y; x, y = y, x No: if x == 4 : print x , y ; x , y = y , x
紧贴在函数调用的参数列表的圆括号的开括号前:
1
2
3Yes: spam(1) No: spam (1)
紧贴在索引或切片的方括号的开括号前:
1
2
3Yes: dict['key'] = list[index] No: dict ['key'] = list [index]
在赋值(或其他)语句的运算符周围,不要为了对齐而使用多个空格。
1
2
3
4
5
6
7
8
9
10Yes: x = 1 y = 2 long_variable = 3 No: x = 1 y = 2 long_variable = 3
总是在这些二元运算符前后加一个空格:赋值(=),自增赋值(+=,-= 等等), 比较(==,<,>,!=,<>,<=,>=,in,not in,is,is not),布尔运算(and,or,not)。
在算术运算符前后加空格:
1
2
3
4
5
6
7
8
9
10
11
12
13Yes: 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)
不要在一个关键字参数或者一个缺省参数值的 = 符号前后加一个空格
1
2
3
4
5
6Yes: 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)
通常不推荐使用复合语句(一行代码中有多条语句)。
1
2
3
4
5
6
7
8
9
10Yes: if foo == 'blah': do_blah_thing() do_one() do_two() do_three() No: if foo == 'blah': do_blah_thing() do_one(); do_two(); do_three()
6,注释
不好理解的注释不如没有注释。注释要和代码保持与时俱进!
注释应该是一条完整的句子。如果注释是一个短语或句子,它的第一个字应该大写,除非它是一个小写字母开头的标识符(绝对不要改变标识符的大小写)。
如果注释很短,那么结尾的句号可以省略。块注释通常由一个或多个段落组成, 这些段落由完整的句子构成,每个句子都应该使用句号结尾。
句号结尾的句子后面应该有2个空格。
来自非英语国家的Python程序员:请使用英语写注释,除非你120%肯定你的代码将永远不会 被不说你的语言的人阅读。
7,命名规范。
永远不要使用 ‘l’(小写的L),’O’(大写的O),或者’I’(大写的I)作为单字变量名。
毫无例外,类名要用首字母大写的规则。内部类,要加上前导下划线。
函数名应该用小写,为了增加可读性可以用下划线分隔。
使用函数命名规则:使用下划线分隔的小写字母会提高可读性。
8,其他。
别用‘==’进行布尔值和 True 或者 False 的比较
1
2
3
4
5Yes: if greeting: No: if greeting == True:
最后
以上就是正直超短裙最近收集整理的关于让你的python代码更优雅(pythonic)—— 基于PEP8的全部内容,更多相关让你的python代码更优雅(pythonic)——内容请搜索靠谱客的其他文章。
发表评论 取消回复