-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
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書號
詳細書籍分類

Effective Python:編寫高質量Python代碼的59個有效方法

( 簡體 字)
作者:作者:〔美〕布雷特·斯拉特金(Brett Slatkin) 著類別:1. -> 程式設計 -> Python
譯者:
出版社:機械工業出版社Effective Python:編寫高質量Python代碼的59個有效方法 3dWoo書號: 43274
詢問書籍請說出此書號!

缺書
NT售價: 295

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

譯者序:

前言:

Python編程語言很強大、很有魅力,但同時也很獨特,所以掌握起來比較困難。許多程序員從他們所熟悉的語言轉入Python之后,沒能把思路打開,以致寫出的代碼無法完全發揮出Python的特性,而另外一些程序員則相反,他們濫用Python的特性,導致程序可能在將來出現嚴重問題。

本書會深入講解如何以符合Python風格的(Pythonic)方式來編寫程序,這種方式就是運用Python語言的最佳方式。筆者假定你對這門語言已經有了初步了解。編程新手可以通過本書學到各種Python功能的最佳用法,而編程老手則能夠學會如何自信地運用一種功能強大的新工具。

筆者的目標是令大家學會用Python來開發優秀的軟件。

本書涵蓋的內容

本書每一章都包含許多互相關聯的條目,大家可以按照自己的需要,隨意閱讀這些條目。每個條目都包含簡明而具體的教程,告訴你應該如何更高效地編寫Python程序。筆者在每個條目里面都給出了建議,告訴大家應該怎樣做、應該避免哪些用法,以及如何在各種做法之間求得平衡,并解釋了筆者所選的做法好在哪里。

本書中的各項條目,適用于Python 3和Python 2(請參閱本書第1條)。對于Jython、IronPython或PyPy等其他運行時環境,大部分條目應該同樣適用。

第1章:用Pythonic方式來思考

Python開發者用Pythonic這個形容詞來描述具有特定風格的代碼。這種風格是大家在使用Python語言進行編程并相互協作的過程中逐漸形成的習慣。本章講解如何以該風格來完成常見的Python編程工作。

第2章:函數

Python中的函數具備多種特性,這可以簡化編程工作。Python函數的某些性質與其他編程語言中的函數相似,但也有些性質是Python獨有的。本章介紹如何用函數來表達意圖、提升可復用程度,并減少bug。

第3章:類與繼承

Python是面向對象的語言。用Python編程時,通常需要編寫新類,并定義這些類應該如何通過其接口及繼承體系與外界相交互。本章講解如何使用類和繼承來表達對象所應具備的行為。

第4章:元類及屬性

元類(metaclass)及動態屬性(dynamic attribute)都是很強大的Python特性,然而它們也可能導致極其古怪、極其突然的行為。本章講解這些機制的常見用法,以確保讀者寫出來的代碼符合最小驚訝原則(rule of least surprise)。

第5章:并發及并行

用Python很容易就能寫出并發程序,這種程序可以在同一時間做許多件不同的事情。我們也可以通過系統調用、子進程(subprocess)及C語言擴展來實現并行處理。本章講解如何在不同情況下充分利用這些Python特性。

第6章:內置模塊

Python預裝了許多寫程序時會用到的重要模塊。這些標準軟件包與通常意義上的Python語言聯系得非常緊密,我們可以將其當成語言規范的一部分。本章將會講解基本的內置模塊。

第7章:協作開發

如果許多人要開發同一個Python程序,那就得仔細商量代碼的寫法了。即便你是一個人開發,也需要理解其他人所寫的模塊。本章講解多人協作開發Python程序時所用的標準工具及最佳做法。

第8章:部署

Python提供了一些工具,使我們可以把軟件部署到不同的環境中。它也提供了一些模塊,令開發者可以把程序編寫得更加健壯。本章講解如何使用Python調試、優化并測試程序,以提升其質量與性能。

本書使用的約定

本書在Python代碼風格指南(Python style guide)的基礎上做了一些修改,使范例代碼便于印刷,也便于凸顯其中的重要內容。一行代碼比較長時,會以?字符來表示折行。代碼中的某些部分,與當前要講的問題聯系不大,筆者會將這部分代碼略去,并在注釋中以省略號來表示(# ...)。為了縮減范例代碼的篇幅,筆者也把內嵌的文檔刪去了。讀者在開發自己的項目時不應該這么做,而是應該遵循Python風格指南(參見本書第2條),并為源代碼撰寫開發文檔(參見本書第49條)。

書中大部分代碼,運行之后都會產生輸出(output)。筆者所謂的輸出,意思是說:在互動式解釋器(interactive interpreter)中運行這些Python程序時,控制臺或終端機里面會打印出一些信息。這些打印出來的信息,以等寬字體印刷,它們上方的那一行會標有>>>符號(這個>>>符號是Python解釋器的提示符)。筆者使用這個符號是想告訴大家:把>>>上方的那些范例代碼輸入Python shell之后,會產生與>>>下方文字相符的輸出信息。

除此之外,還有一些上方雖無>>>符號,但卻以等寬字體印刷的代碼段。這些內容用來表示產生于Python解釋器之外的輸出信息。它們的上方通常都會有$字符,這表示筆者是在Bash之類的命令行shell里面先運行了程序,然后才產生這些輸出的。

獲取源代碼及勘誤表

大家可以拋開本書的講解部分,把某些范例作為完整的程序運行一遍,這樣是很有好處的。你可以用這些代碼做實驗,以了解整個程序的運行原理。全部源碼都可以從本書網站(http://www.effectivepython.com/)下載。書中的錯誤也會張貼到該網站。
內容簡介:

用Python編寫程序,是相當容易的,所以這門語言非常流行。但若想掌握Python所特有的優勢、魅力和表達能力,則相當困難,而且語言中還有很多隱藏的陷阱,容易令開發者犯錯。
本書可以幫你掌握真正的Pythonic編程方式,令你能夠完全發揮出Python語言的強大功能,并寫出健壯而高效的代碼。Scott Meyers在暢銷書《Effective C++》中開創了一種以使用場景為主導的精練教學方式,本書作者Brett Slatkin就以這種方式匯聚了59條優秀的實踐原則、開發技巧和便捷方案,并以實用的代碼范例來解釋它們。
Slatkin根據自己在Google公司多年開發Python基礎架構所積累的經驗,揭示Python語言中一些鮮為人知的微妙特性,并給出了能夠改善代碼功能及運行效率的習慣用法。通過本書,你能夠了解到解決關鍵編程任務所用的最佳方式,并學會編寫易于理解、便于維護且利于改進的代碼。

本書核心內容包括:
● 涵蓋Python 3.x及Python 2.x主要應用領域的實用指南,以及與之配套的詳細解釋及代碼范例。
● 與函數相關的編程建議,這些建議有助于我們寫出意圖清晰、便于復用且缺陷較少的函數。
● 如何準確地表達類與對象的行為。
● 在使用元類和動態屬性時,如何避免錯誤的用法。
● 更為高效的并發及并行方式。
● 與Python內置模塊相關的編程技巧和習慣用法。
● 多人協作時所用的開發工具和最佳實踐方式。
● 旨在改善代碼質量和程序性能的調試、測試與優化方案。
目錄:

本書贊譽

譯??者??序

前  言

致  謝

第1章 用Pythonic方式來思考 1

第1條:確認自己所用的Python版本 1

第2條:遵循PEP 8風格指南 3

第3條:了解bytes、str與unicode的區別 5

第4條:用輔助函數來取代復雜的表達式 8

第5條:了解切割序列的辦法 10

第6條:在單次切片操作內,不要同時指定start、end和stride 13

第7條:用列表推導來取代map和f?ilter 15

第8條:不要使用含有兩個以上表達式的列表推導 16

第9條:用生成器表達式來改寫數據量較大的列表推導 18

第10條:盡量用enumerate取代range 20

第11條:用zip函數同時遍歷兩個迭代器 21

第12條:不要在for和while循環后面寫else塊 23

第13條:合理利用try/except/else/f?inally結構中的每個代碼塊 25

第2章 函數 28

第14條:盡量用異常來表示特殊情況,而不要返回None 28

第15條:了解如何在閉包里使用外圍作用域中的變量 30

第16條:考慮用生成器來改寫直接返回列表的函數 35

第17條:在參數上面迭代時,要多加小心 37

第18條:用數量可變的位置參數減少視覺雜訊 41

第19條:用關鍵字參數來表達可選的行為 43

第20條:用None和文檔字符串來描述具有動態默認值的參數 46

第21條:用只能以關鍵字形式指定的參數來確保代碼明晰 49

第3章 類與繼承 53

第22條:盡量用輔助類來維護程序的狀態,而不要用字典和元組 53

第23條:簡單的接口應該接受函數,而不是類的實例 58

第24條:以@classmethod形式的多態去通用地構建對象 62

第25條:用super初始化父類 67

第26條:只在使用Mix-in組件制作工具類時進行多重繼承 71

第27條:多用public屬性,少用private屬性 75

第28條:繼承collections.abc以實現自定義的容器類型 79

第4章 元類及屬性 84

第29條:用純屬性取代get和set方法 84

第30條:考慮用@property來代替屬性重構 88

第31條:用描述符來改寫需要復用的@property方法 92

第32條:用__getattr__、__getattribute__和__setattr__實現按需生成的屬性 97

第33條:用元類來驗證子類 102

第34條:用元類來注冊子類 104

第35條:用元類來注解類的屬性 108

第5章 并發及并行 112

第36條:用subprocess模塊來管理子進程 113

第37條:可以用線程來執行阻塞式I/O,但不要用它做平行計算 117

第38條:在線程中使用Lock來防止數據競爭 121

第39條:用Queue來協調各線程之間的工作 124

第40條:考慮用協程來并發地運行多個函數 131

第41條:考慮用concurrent.futures來實現真正的平行計算 141

第6章 內置模塊 145

第42條:用functools.wraps定義函數修飾器 145

第43條:考慮以contextlib和with語句來改寫可復用的try/f?inally代碼 148

第44條:用copyreg實現可靠的pickle操作 151

第45條:應該用datetime模塊來處理本地時間,而不是用time模塊 157

第46條:使用內置算法與數據結構 161

第47條:在重視精確度的場合,應該使用decimal 166

第48條:學會安裝由Python開發者社區所構建的模塊 168

第7章 協作開發 170

第49條:為每個函數、類和模塊編寫文檔字符串 170

第50條:用包來安排模塊,并提供穩固的API 174

第51條:為自編的模塊定義根異常,以便將調用者與API相隔離 179

第52條:用適當的方式打破循環依賴關系 182

第53條:用虛擬環境隔離項目,并重建其依賴關系 187

第8章 部署 193

第54條:考慮用模塊級別的代碼來配置不同的部署環境 193

第55條:通過repr字符串來輸出調試信息 195

第56條:用unittest來測試全部代碼 198

第57條:考慮用pdb實現交互調試 201

第58條:先分析性能,然后再優化 203

第59條:用tracemalloc來掌握內存的使用及泄漏情況 208
序: