-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

編寫高質量代碼:改善Python程序的91個建議

( 簡體 字)
作者:張穎 賴勇浩 著類別:1. -> 程式設計 -> Python
譯者:
出版社:機械工業出版社編寫高質量代碼:改善Python程序的91個建議 3dWoo書號: 38764
詢問書籍請說出此書號!

缺書
NT售價: 295

出版日:6/1/2014
頁數:262
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
ISBN:9787111467045
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

寫這本書

當這本書的寫作接近尾聲的時候,回過頭來看看這一年多的寫作歷程,不由得心生感嘆,這是一個痛并快樂著的過程。不必說犧牲了多少個周末,也不必計算多少個夜晚伏案寫作,單是克服寫作過程中因疲勞而迸發出來的彷徨、猶豫和動搖等情緒都覺得是件不容易的事情。但不管怎么說,這最終是個沉淀和收獲的過程,寫作的同時我也和讀者們一樣在進步。為什么要寫這本書?可以說是機緣巧合。機械工業出版社的楊福川老師聯系到我,說他們打算策劃一本關于高質量Python編程方面的書籍,問我有沒有興趣加入。實話實說,最開始我是持否定態度的,一則因為業余時間實在有限,無法保證我“工作和生活要平衡”的理念;二則覺得自己水平有限,在學習Python的道路上我和千千萬萬讀者一樣,只是一個普通的“朝圣者”,我也有迷惑不解的時候,在沒有修煉到大徹大悟之前拿什么來給人傳道授業?是賴勇浩老師的加入給我注入了一針強心劑,他豐富的Python項目經驗以及長期活躍于Python社區所積累下來的名望無形中給了我一份信心。楊老師的鼓勵和支持也更加堅定了我的態度,經過反復考慮和調整自己的心態,最終我決定和賴老師一起完成這本書。因為我也經歷過從零開始的Python學習過程,我也遇到過各種困惑,經歷過不同的曲折,這些可能也正是每一個學習Python的人從最初到進階這一過程中都會遇到的問題。抱著分享自己在學習和工作中所積累的一點微薄經驗的心態,我開始了本書的寫作之旅。這個過程也被我當作是對自己學過的知識的一種梳理。如果與此同時,還能夠給讀者帶來一些啟示和思索,那將是這本書所能帶給我的最大收獲了。

讀者對象

有一定的Python基礎,希望通過項目最佳實踐來提升自己的相關Python人員。

希望進一步掌握Python相關內部機制的技術人員。

希望寫出更高質量、更Pythonic代碼的編程人員。

開設相關課程的大專院校師生。

如何閱讀本書

首先需要注意的是,本書并不是入門級的語法介紹類的書籍,因此在閱讀本書之前假定你已經掌握了最基礎的Python語法。如果沒有,也沒有關系,你可以先找一本最簡單的介紹Python語法的書籍看看,嘗試寫幾個Python小程序之后再來閱讀本書。

本書分為8章,主要從編程慣用法、基礎語法、庫、設計模式、內部機制、開發工具、性能剖析與優化等方面解讀如何編寫高質量的Python程序。每個章節的內容都以建議的形式呈現,這些建議或源于實際項目應用經驗,或源于對Python本質的理解和探討,或源于社區推薦的做法。它們能夠幫助讀者快速完成從入門到進階的這個過程。

由于各個章節相對獨立,因此無須花費整段的時間從頭開始閱讀。你可以在空閑的時候選取任意感興趣的小節閱讀。為了減輕讀者負擔,本書代碼盡量保持完整,閱讀過程中無須額外下載其他相關代碼。

勘誤和支持

由于作者的水平有限,加之編寫時間倉促,書中難免會出現一些錯誤或者不準確的地方,懇請讀者批評指正。如果你在閱讀過程中遇到任何問題或者發現任何錯誤,歡迎發送郵件至郵箱highqualitypython@163com,我們會盡量一一解答直到你滿意。期待能夠得到你的真摯反饋。

致謝

首先要感謝機械工業出版社華章公司的楊福川老師,因為有了你的鼓勵才使我有勇氣開始這本書。還要感謝機械工業出版社的孫海亮編輯,在這一年多的時間中始終支持我的寫作,是你的鼓勵和幫助引導我順利完成全部書稿。當然也要感謝我的搭檔賴老師,和你合作是一件非常愉快的事情,也讓我收獲頗多。

其次要感謝我的家人,是你們的寬容、支持和理解給了我完成本書的動力,也是你們無微不至的照顧讓我不必為生活中的瑣事煩心,從而能全身心地投入到寫作中去。

最后,我想提前感謝一下本書的讀者,謝謝你們能夠選擇閱讀這本書,這將是作為作者的我們最大的榮幸。

謹以此書獻給所有熱愛Python的朋友們!



張 穎
內容簡介:

thon因為具有簡單易學、開發效率高、跨平臺、面向對象、可擴展、可嵌入、類庫豐富等特性,所以被廣泛應用于數據處理、游戲邏輯編程、科學計算、系統運維、可編程控制(人工智能)和信息安全等多個領域,是當下最受歡迎的編程語言之一。作為一位Python程序員,如何才能編寫出健壯、優雅、高質量的代碼?這是很多Python程序員都感興趣和都在探索的問題。本書嘗試著從如下8個方面總結了編寫高質量Python代碼所需掌握的知識、經驗和技巧。
容易被忽視的重要概念和常識,如代碼的布局和編寫函數的原則等;
編寫Python程序慣用的方法,如利用assert語句去發現問題、使用enumerate()獲取序列迭代的索引和值等;
語法中的關鍵條款,如有節制地使用from...import語句、異常處理的幾點基本原則等;
常見庫的使用,如按需選擇sort()或者sorted()、使用Queue使多線程編程更安全等;
Python設計模式的使用,如用發布訂閱模式實現松耦合、用狀態模式美化代碼等;
Python的內部機制,如名字查找機制、描述符機制等;
開發工具的使用,如pip等各種開發工具的使用、各種代碼測試用具的使用等;
Python代碼的性能優化分析,優化的原則、工具、技巧,以及常見性能問題的解決等。
目錄:

前 言

第1章 引論 1

建議1:理解Pythonic概念 1

建議2:編寫Pythonic代碼 5

建議3:理解Python與C語言的不同之處 8

建議4:在代碼中適當添加注釋 10

建議5:通過適當添加空行使代碼布局更為優雅、合理 12

建議6:編寫函數的4個原則 15

建議7:將常量集中到一個文件 18

第2章 編程慣用法 20

建議8:利用assert語句來發現問題 20

建議9:數據交換值的時候不推薦使用中間變量 22

建議10:充分利用Lazy evaluation的特性 24

建議11:理解枚舉替代實現的缺陷 25

建議12:不推薦使用type來進行類型檢查 27

建議13:盡量轉換為浮點類型后再做除法 29

建議14:警惕eval()的安全漏洞 31

建議15:使用enumerate()獲取序列迭代的索引和值 33

建議16:分清==與is的適用場景 35

建議17:考慮兼容性,盡可能使用Unicode 37

建議18:構建合理的包層次來管理module 42

第3章 基礎語法 45

建議19:有節制地使用from...import語句 45

建議20:優先使用absolute import來導入模塊 48

建議21:i+=1不等于++i 50

建議22:使用with自動關閉資源 50

建議23:使用else子句簡化循環(異常處理) 53

建議24:遵循異常處理的幾點基本原則 55

建議25:避免finally中可能發生的陷阱 59

建議26:深入理解None,正確判斷對象是否為空 60

建議27:連接字符串應優先使用join而不是+ 62

建議28:格式化字符串時盡量使用.format方式而不是% 64

建議29:區別對待可變對象和不可變對象 68

建議30:[]、()和{}:一致的容器初始化形式 71

建議31:記住函數傳參既不是傳值也不是傳引用 73

建議32:警惕默認參數潛在的問題 77

建議33:慎用變長參數 78

建議34:深入理解str()和repr()的區別 80

建議35:分清staticmethod和classmethod的適用場景 82

第4章 庫 86

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

建議37:按需選擇sort()或者sorted() 89

建議38:使用copy模塊深拷貝對象 92

建議39:使用Counter進行計數統計 95

建議40:深入掌握ConfigParser 97

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

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

建議43:一般情況使用ElementTree解析XML 107

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

建議45:序列化的另一個不錯的選擇——JSON 113

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

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

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

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

第5章 設計模式 129

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

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

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

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

第6章 內部機制 141

建議54:理解built-in objects 141

建議55:__init__()不是構造方法 143

建議56:理解名字查找機制 147

建議57:為什么需要self參數 151

建議58:理解MRO與多繼承 154

建議59:理解描述符機制 157

建議60:區別__getattr__()和__getattribute__()方法 160

建議61:使用更為安全的property 164

建議62:掌握metaclass 169

建議63:熟悉Python對象協議 176

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

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

建議66:熟悉 Python 的生成器 185

建議67:基于生成器的協程及greenlet 188

建議68:理解GIL的局限性 192

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

第7章 使用工具輔助項目開發 197

建議70:從PyPI安裝包 197

建議71:使用pip和yolk安裝、管理包 199

建議72:做paster創建包 202

建議73:理解單元測試概念 209

建議74:為包編寫單元測試 212

建議75:利用測試驅動開發提高代碼的可測性 216

建議76:使用Pylint檢查代碼風格 218

建議77:進行高效的代碼審查 221

建議78:將包發布到PyPI 224

第8章 性能剖析與優化 227

建議79:了解代碼優化的基本原則 227

建議80:借助性能優化工具 228

建議81:利用cProfile定位性能瓶頸 229

建議82:使用memory_profiler 和 objgraph 剖析內存使用 235

建議83:努力降低算法復雜度 237

建議84:掌握循環優化的基本技巧 238

建議85:使用生成器提高效率 240

建議86:使用不同的數據結構優化性能 243

建議87:充分利用set的優勢 245

建議88:使用multiprocessing克服GIL的缺陷 248

建議89:使用線程池提高效率 254

建議90:使用C/C++模塊擴展提高性能 257

建議91:使用 Cython 編寫擴展模塊 259
序: