10天讀完《編寫高質量程式碼 改善Python程式設計的91個建議》——Day6
計劃
Hello,這是一個讀書摘要的計劃,10天讀完《編寫高質量程式碼 改善Python程式設計的91個建議》,我會每天摘錄大概9個書中提到的建議,分享在這裡,也作為自己的打卡任務。關於這本書,他並不是python入門的教學書籍,而是一本用來改善程式設計習慣和風格的書,可以幫助我們寫出漂亮的,也就是符合pythonic的python程式碼。書中的知識難度不會很大,每天看幾條,然後落實到實際程式設計中加以鞏固,就能融會貫通,久而久之也就能養成好的程式設計習慣。如果你沒有時間看原書,那麼直接看我的摘要就好啦,遇到感興趣的再去詳細瞭解也會方便很多,當然這裡摘要的內容是我覺得有用的部分啦。注意,一定要會運用!
書摘
建議47 日誌級別
DEBUG:詳細資訊,在追蹤問題的時候使用
INFO:正常的資訊
WARNING:一些不可預見的問題發生,或者將要發生,如磁碟空間低等,但不影響程式執行
ERROR:由於某些嚴重的問題,程式中的一些功能收到影響
CRITICAL:嚴重的錯誤,或者程式本身不能夠繼續執行
設定方法:Logger.setlevel(lv1)
使用tips:
-
儘量為logging取個名字,為方便查詢問題,名字建議用模組或者class來命名('.'劃分)
-
logging只是執行緒安全,不支援多程序寫入同一個日誌檔案
建議48 使用threading模組編寫多執行緒程式
-
thread與threading區別(前者是底層支援,後者包含了前者)
-
threading具體使用詳見博文。
建議49 使用Queue 使多執行緒程式設計更加安全
- 詳見博文。
建議50 利用模組實現單例模式
-
單例模式可以保證系統中一個類只有一個例項而且該例項易於被外界訪問,從而方便控制例項個數並節約系統資源。
-
Sun 這裡不再開展。
建議51 用mixin模式讓程式更加靈活
模組方法模式就是先在一個方法中定義一個演算法的骨架,然後在子類中實現具體步驟。混入mixin方法可以方便對基類的管理,具體不再展開。
建議52 用釋出訂閱模式實現鬆耦合
釋出訂閱模式是一種程式設計模式,訊息的傳送者不會發送其訊息給特定的接收者(訂閱者),而是將釋出的訊息分為不同的類別直接釋出,並不關注訂閱者是誰。而訂閱者可以對一個或多個類別感興趣,且只接收感興趣的訊息,並且不關注是哪個釋出者釋出的訊息。既然雙方並不需要知道對方的存在,要實現這個模式就需要一箇中間代理人,如Broker,blinker,python-message。
建議53 用狀態模式美化程式碼
所謂狀態模式,就是當一個物件的內在狀態改變時允許改變其行為,但這個物件看起來像是改變了其類。下面展示一個例子:
def workday():
print('work hard')
def weekend():
print('have fun')
class People(object): pass
people = People
while True:
for i in range(1,8):
if i == 6:
people.day = weekend
if i == 1:
people.day = workday
people.day()
建議54 理解built-in objects
在python中一切皆物件的理念,object是所有內建型別的基類。討論古典類、新式類區別與聯絡,不再展開。
建議55 init()不是構造方法
init()並不是真正意義上的構造方法,他是在類的物件建立好之後進行變數的初始化,new()方法才會真正建立例項,是類的構造方法。兩者都是object類中的預設方法。