編寫高質量代碼-改善 Python 程序的 91 個建議 Effective系列丛书:编写高质量代码:改善Python程序的91个建议

張穎, 賴勇浩

  • 出版商: 機械工業
  • 出版日期: 2014-06-01
  • 定價: $354
  • 售價: 8.5$301
  • 語言: 簡體中文
  • 頁數: 262
  • 裝訂: 平裝
  • ISBN: 7111467043
  • ISBN-13: 9787111467045
  • 相關分類: Python

已絕版

買這商品的人也買了...

相關主題

商品描述

<內容大綱>

在通往「Python技術殿堂」的路上,本書將為你編寫健壯、優雅、高質量的Python代碼提供切實幫助!內容全部由Python編碼的最佳實踐組成,從基本原則、慣用法、語法、庫、設計模式、內部機制、開發工具和性能優化8個方面深入探討了編寫高質量Python代碼的技巧與禁忌,一共總結出91條寶貴的建議。每條建議對應Python程序員可能會遇到的一個問題。張穎、賴勇浩編著的《編寫高質量代碼(改善Python程序的91個建議)》不僅以建議的方式從正反兩方面給出了被實踐證明為十分優秀的解決方案或非常糟糕的解決方案,而且分析了問題產生的根源,會使人有一種醍醐灌頂的感覺,豁然開朗。
    本書針對每個問題所選擇的應用場景都非常典型,給出的建議也都與實踐緊密結合。書中的每一條建議都可能在你的下一行代碼、下一個應用或下一個項目中顯露鋒芒。建議你將本書擱置在手邊,隨時查閱,相信這麼做一定能使你的學習和開發工作事半功倍。

<目錄>

前言
第1章 引論
  建議1:理解Pythonic概念
  建議2:編寫Pythonic代碼
  建議3:理解Python與C語言的不同之處
  建議4:在代碼中適當添加註釋
  建議5:通過適當添加空行使代碼佈局更為優雅、合理
  建議6:編寫函數的4個原則
  建議7:將常量集中到一個文件
第2章 編程慣用法
  建議8:利用assert語句來發現問題
  建議9:數據交換值的時候不推薦使用中間變量
  建議10:充分利用Lazy evaluation的特性
  建議11:理解枚舉替代實現的缺陷
  建議12:不推薦使用type來進行類型檢查
  建議13:盡量轉換為浮點類型後再做除法
  建議14:警惕eval()的安全漏洞
  建議15:使用enumerate()獲取序列迭代的索引和值
  建議16:分清==與is的適用場景
  建議17:考慮兼容性,盡可能使用Unicode
  建議18:構建合理的包層次來管理module
第3章 基礎語法
  建議19:有節制地使用from...import語句
  建議20:優先使用absolute import來導入模塊
  建議21:i+=1不等於++i
  建議22:使用with自動關閉資源
  建議23:使用else子句簡化循環(異常處理)
  建議24:遵循異常處理的幾點基本原則
  建議25:避免finally中可能發生的陷阱
  建議26:深入理解None,正確判斷對象是否為空
  建議27:連接字符串應優先使用join而不是+
  建議28:格式化字符串時盡量使用.format方式而不是%
  建議29:區別對待可變對象和不可變對象
  建議30:[]、()和{}:一致的容器初始化形式
  建議31:記住函數傳參既不是傳值也不是傳引用
  建議32:警惕默認參數潛在的問題
  建議33:慎用變長參數
  建議34:深入理解str()和repr()的區別
  建議35:分清staticmethod和classmethod的適用場景
第4章 庫
  建議36:掌握字符串的基本用法
  建議37:按需選擇sort()或者sorted()
  建議38:使用copy模塊深拷貝對象
  建議39:使用Counter進行計數統計
  建議40:深入掌握ConfigParser
  建議41:使用argparse處理命令行參數
  建議42:使用pandas處理大型CSV文件
  建議43:一般情況使用ElementTree解析XML
  建議44:理解模塊pickle優劣
  建議45:序列化的另一個不錯的選擇——JSON
  建議46:使用traceback獲取棧信息
  建議47:使用logging記錄日誌信息
  建議48:使用threading模塊編寫多線程程序
  建議49:使用Queue使多線程編程更安全
第5章 設計模式
  建議50:利用模塊實現單例模式
  建議51:用mixin模式讓程序更加靈活
  建議52:用發布訂閱模式實現松耦合
  建議53:用狀態模式美化代碼
第6章 內部機制
  建議54:理解built-in objects
  建議55:__init__()不是構造方法
  建議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:對象的管理與垃圾回收
第7章 使用工具輔助項目開發
  建議70:從PyPI安裝包
  建議71:使用pip和yolk安裝、管理包
  建議72:做paster創建包
  建議73:理解單元測試概念
  建議74:為包編寫單元測試
  建議75:利用測試驅動開發提高代碼的可測性
  建議76:使用Pylint檢查代碼風格
  建議77:進行高效的代碼審查
  建議78:將包發布到PyPI
第8章 性能剖析與優化
  建議79:瞭解代碼優化的基本原則
  建議80:借助性能優化工具
  建議81:利用cProfile定位性能瓶頸
  建議82:使用memory_profiler 和 objgraph 剖析內存使用
  建議83:努力降低演算法複雜度
  建議84:掌握循環優化的基本技巧
  建議85:使用生成器提高效率
  建議86:使用不同的數據結構優化性能
  建議87:充分利用set的優勢
  建議88:使用multiprocessing剋服GIL的缺陷
  建議89:使用線程池提高效率
  建議90:使用C/C++模塊擴展提高性能
  建議91:使用 Cython 編寫擴展模塊