改善Python程序的91個建議(筆記二)

接上篇,這裡補充上書名(其實圖片中已經有了)《編寫高質量代碼:改善Python程序的91個建議》。作者是 @賴勇浩 。這裡我基本是按照書本上的東西在整理,時間有限沒有深究。整理主要是為了方便自己以後查看,能幫助到一些人呢就更好了,如果因為水平問題有寫錯的部分,還請大家多多諒解。

【其實主要是整理了一下書中的標題,以及對個別建議的簡單解釋】

第四章:庫

建議36:掌握字元串的基本用法

建議37:按需選擇sort()和sorted()函數

》sort()是列表在就地進行排序,所以不能排序元組等不可變類型。

》sorted()可以排序任意的可迭代類型,同時不改變原變數本身。

建議38:使用copy模塊深拷貝對象,區分淺拷貝(shallow copy)和深拷貝(deep copy)

建議39:使用Counter進行計數統計,Counter是字典類的子類,在collections模塊中

建議40:深入掌握ConfigParser

建議41:使用argparse模塊處理命令行參數

建議42:使用pandas處理大型CSV文件

》Python本身提供一個CSV文件處理模塊,並提供reader、writer等函數。

》Pandas可提供分塊、合併處理等,適用於數據量大的情況,且對二維數據操作更方便。

建議43:使用ElementTree解析XML

建議44:理解模塊pickle的優劣

》優勢:介面簡單、各平台通用、支持的數據類型廣泛、擴展性強

》劣勢:不保證數據操作的原子性、存在安全問題、不同語言之間不兼容

建議45:序列化的另一個選擇JSON模塊:load和dump操作

建議46:使用traceback獲取棧信息

建議47:使用logging記錄日誌信息

建議48:使用threading模塊編寫多線程程序

建議49:使用Queue模塊使多線程編程更安全

第五章:設計模式

建議50:利用模塊實現單例模式

建議51:用mixin模式讓程序更加靈活

建議52:用發布-訂閱模式實現松耦合

建議53:用狀態模式美化代碼

第六章:內部機制

建議54:理解build-in對象

建議55:__init__()不是構造方法,理解__new__()與它之間的區別

建議56:理解變數的查找機制,即作用域

》局部作用域

》全局作用域

》嵌套作用域

》內置作用域

建議57:為什麼需要self參數

建議58:理解MRO(方法解析順序)與多繼承

建議59:理解描述符機制

建議60:區別__getattr__()與__getattribute__()方法之間的區別

建議61:使用更安全的property

建議62:掌握元類metaclass

建議63:熟悉Python對象協議

建議64:利用操作符重載實現中綴語法

建議65:熟悉Python的迭代器協議

建議66:熟悉Python的生成器

建議67:基於生成器的協程和greenlet,理解協程、多線程、多進程之間的區別

建議68:理解GIL的局限性

建議69:對象的管理和垃圾回收

後邊還有2個章節的內容,分別是使用工具輔助項目開發、性能剖析與優化。

=============================================================

作者主頁:笑虎(Python愛好者,關注爬蟲、數據分析、數據挖掘、數據可視化等)

作者專欄主頁:擼代碼,學知識 - 知乎專欄

作者GitHub主頁:擼代碼,學知識 - GitHub

歡迎大家拍磚、提意見。相互交流,共同進步!

==============================================================


推薦閱讀:

Django 學習小組:基於類的通用視圖詳解(一)
黃哥Python 所寫三大操作系統Python 學習環境準備
PyQt5系列教程(22):按鈕(QPushButton)
如何在十天內學會django達到可以找工作的水平?
為什麼要學 Python?

TAG:Python | Python入門 | Python開發 |