Google Python Style Guide学习笔记

最近发现一些规范的工作习惯真的太重要了,而规范的编码习惯对于程序员来说又是非常必要的,因此,对Google Python Style Guide进行学习并做一下笔记。

pylint工具

pylint是一个好用的用于给python进行打分的工具,能够查找错误和代码风格问题。通过以下指令即可对py代码进行评分

pylint test.py

导入import

在导入整个模块的时候,可以根据情况使用以下方法

import x # 导入整个x模块
from x import y # 导入x中的y
from x import y as z # 当可能有多个导入模块重名时,可以给导入的模块取一个别名z
from x.y import z # 当需要导入自己开发的一些模块的时候

捕获异常

在代码中,总会遇到各种异常,我们也需要对各种异常进行针对性的处理,而不应该仅仅是对所有异常进行统一一个方式处理。如

# YES 应该通过不同的except进行处理
try:
    a = [0,1,2]
    b = a[3]
    
    a = 2/0
except IndexError as i:
    print i
    print 'indexerror'
except ZeroDivisionError as z:
    print z
    print 'ZeroDivisionError'
except Exception as e:
    print e
    
# NO 不应该直接对所有的错误使用一个方式处理
try:
    a = [0,1,2]
    b = a[3]
    
    a = 2/0
except Exception as e:
    print e

另外,建议使用raise抛出异常,而不是使用assert断言。因为raise可以指定排除哪种异常,这样可以在上一级代码中进行相应的处理,而使用断言的话,可能就直接退出程序了。如

# Yes
def test(b):
    if not b:
        raise ValueError('抛出ValueError异常')
test(False)

# No
def test(b):
    assert b, '无法指定异常为ValueError'
test(False)

迭代器操作

在遍历的时候,尽量使用迭代器操作。如

# Yes
for key in adict: ...
if key not in adict: ...
if obj in alist: ...
for line in afile: ...
for k, v in adict.items(): ...
for k, v in six.iteritems(adict): ...

# No
for key in adict.keys(): ...
if not adict.has_key(key): ...
for line in afile.readlines(): ...
for k, v in dict.iteritems(): ...

函数默认值的设置

在定义函数的时候,经常需要设置一些默认值,但是建议在函数内部中进行设置,这样可以在函数定义的时候省去生成相关初始值的操作。如

# YES
def foo(a, b=None):
    if b is None:
        b = []

# NO
def foo(a, b=[]):
    ...

读取文件

在进行文件读取的时候,尽量使用with(),尽量少使用open/close方式,因为很可能在open之后close之前代码出现异常而停止,这样之前打开的文件就没有close,可能会对文件的内容造成影响

# YES
with open(file_name, 'r') as f:
	for line in f:
		...

# NO
f = open(file_name, 'r')
...
f.close()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章