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 命名

要避免的命名方式:

不要使用当个字符命名 命名不要带有- 符号 不要在命名开头或者结尾使用__下划线

使用命名的方式

  1. "Internal" means internal to a module or protected or private within a class. 这句不懂什么意思。
  2. 使用_开头作为命名,能避免把import * from

还有其他的几条暂时还不能理解是什么

  • Main

在python 所有代码都是应该被导入的,在执行主程序时 __name__ == '__main__ 这样在模块被import时,不会执行主程序。

def main():
      ...

if __name__ == '__main__':
    main()

在写代码时,先花点时间看下周边的代码的整体风格,尽量保持风格一致。