排版
縮進統(tǒng)一使用四個空格編寫。
文件中必須使用UTF-8編碼重慢。
一行只寫一條語句(包括加載模塊時今阳,必須每個模塊獨占一行)师溅。
相對獨立的程序塊之間、以及變量說明之后盾舌,必須添加空行墓臭。
一行長度小于80個字符。
操作符前后添加空格(有特殊情況)妖谴。
模塊加載順序(標準庫窿锉、第三方關聯(lián)庫、本地特定庫、程序)榆综,并在這幾組導入語句之間添加空行妙痹。
避免“from ××× import * ”的導入方式,采用“from ××× import yyy”鼻疮。
文件頭使用“#!/usr/bin/env python”指定解釋器怯伊。
注釋
類和接口的注釋寫在類聲明的下一行,并向后縮進四個空格判沟。內(nèi)容包括:功能描述 需描述類和接口功能耿芹,并寫明和其他類或接口之間的關系;屬性清單 列出該類或接口的接口方法的描述挪哄;修改記錄 包括修改人吧秕,修改日期和修改內(nèi)容。
class Testclass():
"""
功能描述:
屬性清單:
修改記錄:
"""
公共函數(shù)的注釋寫在類聲明的下一行迹炼,并向后縮進四個空格砸彬。內(nèi)容包括:功能描述、輸入?yún)?shù)斯入、輸出參數(shù)砂碉、返回值、調(diào)用關系刻两、異常描述增蹭、修改記錄 。
def test_fun():
"""
功能描述:
輸入?yún)?shù):
輸出參數(shù):
……
"""
公共屬性的注釋寫在屬性聲明的上方磅摹,與聲明保持同樣的縮進滋迈。
#Compensate for border
x = x + 1
"""
功 能:XXX類饼灿,該類主要涉及XXX功能
版權信息:XXX公司,版本所有(C) 2010-2017
修改記錄:2015-3-17 12:00 XXX XXXXXXXX 創(chuàng)建
2017-3-17 12:00 XXX XXXXXXXX 修改 XXX
"""
文檔字符串多余一行時帝美,末尾的"""要自成一行碍彭。
注釋必須與其描述的代碼保持同樣的縮進,且位于代碼上方证舟。
全局變量應該有詳細的注釋說明硕旗。
命名
包和模塊名使用意義完整的英文描述,風格為小寫單詞加下劃線的組合女责。
類名使用意義完成的英文描述漆枚,風格為大寫字母開頭的單詞。
函數(shù)抵知、方法墙基、函數(shù)參數(shù)使用意義完整的英文描述软族,風格為小寫單詞加下劃線的組合。
變量使用小寫加下劃線的風格命名残制。常量使用大寫加下劃線的風格命名立砸。
類或?qū)ο蟮乃接谐蓡T使用單下劃線開頭;對于需要被繼承的基類成員初茶,如果想要防止與派生類成員重名颗祝,可用雙下劃線開頭。
編碼
與None比較時采用“is”或“is not”恼布。
在模塊中定義all 螺戳,將允許外部訪問的變量、函數(shù)折汞、類名放進去倔幼。
__all__ = ["sample_external_function"]
def sample_external_function():
print("This is an external function..")
def sample_internal_function():
print("This is an internal function..")
避免不同對象使用同一命名。
類中的方法根據(jù)具體場景選擇使用@staticmethod 或者@classmethod 進行修飾爽待。一般的類方法要接收一個self參數(shù)表示此類的實例损同,但有些方法不需要訪問實例,這時分為兩種情況: 1鸟款、方法不需要訪問任何成員膏燃,或者只需要顯式訪問這個類自己的成員。這樣的方法不需要額外參數(shù)欠雌,應當用@staticmethod裝飾蹄梢;2疙筹、方法不需要訪問實例的成員富俄,但需要訪問基類或派生類的成員。這時應當用@classmethod裝飾而咆。
避免在無關變量或無關概念之間重用名字霍比。
異常處理
try...except...結構對代碼作保護時,需在異常后使用finally...結構確保釋放操作對象暴备。
不要使用except語句來捕獲所有異常悠瞬,每次只捕獲一種異常。
不在except分支里面的raise都必須帶異常涯捻。
禁止使用except X浅妆,x語法,應該使用except X as x障癌。
assert語句只能使用在測試代碼中凌外,禁止在生產(chǎn)版本中包含assert功能。
編程實踐
函數(shù)參數(shù)中的可變參數(shù)涛浙,不要使用默認值康辑,在定義時使用None摄欲。
對子類繼承的變量要做顯式定義和賦初值。
嚴禁使用注釋行等形式僅使功能失效疮薇,不用的功能必須徹底刪除胸墙。
使用os.path庫中的方法代替字符串拼接來完成文件系統(tǒng)路徑的操作。
最后編輯于 :2019.07.24 16:35:52
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者