改善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?