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()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章