Google Python Style Guide
这里记录自己犯过错,目前能看得懂的地方:
- import 模块导入
导入模块不要使用相对名字,尽量使用完整名字,能避免导入同一个包两次。在3wd4课堂里大妈说过,少使用from xxx import *
避免导入过多的模块,相互产生冲突。
- Packages 包
使用模块的全路径来导入模块。
- Global variables
少用全局变量,尽量控制在模块级别里应用。
- List Comprehensions 列表推导
简单的列表推导,能创建更加清晰的列表,
- True/False evaluations
使用布尔布局,容易阅读,不容易出错。
Python Style Rules
这部分能看懂的比较多,因为看完这部分,再返回去看自己之前的代码,明显的感觉出犯的错误。
- Semicolons 分号
不用使用分号作为结束,也不要用分号来让一行带有两个语句,在a byte of python
里面提到的物理行跟逻辑行,为了方便代码阅读,一行物理行,只带有一个逻辑行。
- line length
一行最多80个字符。
不要使用\用于连续下一行 When a literal string won't fit on a single line, use parentheses for implicit line joining. 当字符串需要两行来表示,可以使用括号起到告知作用。
下面的例子,括号的缩进对其部分,也是我经常犯错的
x = ('This will build a very long long '
'long long long long long long string')
- Parentheses 括号
return 句跟条件句少用括号,除非用来表示判断语句中的一部分,或者告知两个行是链接一起的。
- Indentation 缩进
用四个空格缩进代码,永远不要使用tab键代替空格,
- Blank lines
top-level definitions函数function跟类class 之间加两个空行, method definitions and between the class line 加一空行,
- Whitespace
关于括号(),中括号[],大括号{} 里面不要带有空格,
comma短号, semicolon分号, or colon冒号,前面不加空格,后面必须加空格,除非在尾行
==, <, >, !=, <>, <=, >=, in, not in, is, is not), and Booleans (and, or, not). 两边加空格
= 用于指示默认参数时,不加两边空格
不需要空格去垂直对其
Yes:
foo = 1000 # comment
long_name = 2 # comment that should not be aligned
dictionary = {
'foo': 1,
'long_name': 2,
}
No:
foo = 1000 # comment
long_name = 2 # comment that should not be aligned
dictionary = {
'foo' : 1,
'long_name': 2,
}
- Shebang Line
.py
文件开头使用 #!/usr/bin/python
加版本号
#!/usr/bin/python2.7
- Strings 字符串
是用% 格式化字符
使用 “”“ 而不是’‘’做为换行符
Yes:
print ("This is much nicer.\n"
"Do it this way.\n")
使用()来表示换行符号
No:
print """This is pretty ugly.
Don't do this.
"""
- Files and Sockets
Explicitly close files and sockets when done with them. 使用whit的方式来管理
文件 with open("hello.txt") as hello_file: for line in hello_file: print line
sockets
import contextlib
with contextlib.closing(urllib.urlopen("http://www.python.org/")) as front_page:
for line in front_page:
print line
TODO Comments
- Imports formatting
不同的模块,放到不同的import 中
按常用到不常用的排序方式 按字母的排序方式
- Statements
一行只放一个语句
- naming 命名
要避免的命名方式:
不要使用当个字符命名 命名不要带有- 符号 不要在命名开头或者结尾使用__下划线
使用命名的方式
- "Internal" means internal to a module or protected or private within a class. 这句不懂什么意思。
- 使用_开头作为命名,能避免把import * from
还有其他的几条暂时还不能理解是什么
- Main
在python 所有代码都是应该被导入的,在执行主程序时 __name__ == '__main__
这样在模块被import时,不会执行主程序。
def main():
...
if __name__ == '__main__':
main()
在写代码时,先花点时间看下周边的代码的整体风格,尽量保持风格一致。