本書有DRM加密保護,需使用HyRead閱讀軟體開啟
  • Effective Python 中文版:寫出良好 Python 程式的 59 個具體做法
  • 點閱:925
  • 作者: Brett Slatkin著 , 黃銘偉譯
  • 出版社:碁峰資訊發行
  • 出版年:2015[民104]
  • ISBN:978-986-347-702-0 ; 986-347-702-8
  • 格式:PDF

內容簡介

「Slatkin 的《Effective Python》中每個主題都是自成一體的一堂課,包含對應該主題的程式碼,這讓你能夠隨意翻閱此書。其中的主題易於瀏覽,並可依讀者需要的順序來研讀。我會向 Python 的學員推薦《Effective Python》這本書,它以相當精簡的方式包含了非常廣泛的主題,為具有相當程度的 Python 程式設計師提供了主流的建議做法。」
—Brandon Rhodes,Dropbox 軟體工程師及 PyCon 2016-2017 主席

使用 Python 撰寫程式是很容易的事情,這也是此語言廣受歡迎的原因。然而,Python 獨特的力量、迷人之處及表達能力,可能會有點難以捉摸,另外也有一些隱藏的陷阱,讓你一不小心就遭殃了。

《Effective Python》將會協助你精通真正的「Pythonic」程式之道,讓你能夠駕馭 Python 的完整威能,撰寫出非常穩固且效能優越的程式碼。依循 Scott Meyers 暢銷書《Effective C++》所開創出的簡潔、情境取向風格,Brett Slatkin 為我們帶來了 59 個 Python 最佳實務做法、訣竅和捷徑,並以真實的程式碼範例闡明它們的原理。

汲取自於 Google 建置 Python 基礎設施的多年經驗,Slatkin 為我們揭露了 Python 少為人知的特點與慣用手法,它們強而有力地改善了程式碼的行為,提升了執行效能。你會學到完成關鍵任務的最佳方式,讓你寫出容易理解、維護並與時俱進的程式碼。

本書特色

■ 容易導入於開發過程的指導原則,適用 Python 3.x 及 2.x 開發的所有主要領域,附有詳盡的說明與範例
■ 撰寫意圖明確、容易重複使用的函式並避免臭蟲的最佳實務做法
■ 說明如何以類別和物件正確地表達程式的行為
■ 指引如何以元類別(metaclasses)及動態屬性來避開常見的陷阱

■ 達成共時(concurrency)與平行處理(parallelism)更有效率的做法
■ 善用 Python 內建模組的優良技巧與慣用法
■ 協作開發(collaborative development)的工具與最佳實務做法
■ 除錯、測試及最佳化的解決方案,以增進程式的品質與效能


作者簡介

Brett Slatkin

Brett Slatkin 是 Google 的 Senior Staff Software Engineer。他是工程部門主管,以及 Google Consumer Surveys 的共同創辦人。之前的主要工作是開發 Google App Engine 的 Python 基礎設施,運用 Python 來管理 Google 龐大的伺服器群,並使用 Python 實作 Google 的 PubSubHubbub 系統,這是它所共同創建的一個協定。Slatkin 擁有紐約市哥倫比亞大學(Columbia University)電腦工程學士學位。

  • 前言(第xi頁)
  • 致謝(第xv頁)
  • 關於作者(第xvii頁)
  • 第1章 Pythonic 思維(第1頁)
    • 做法 01 知道你所用的 Python 版本(第1頁)
    • 做法 02 遵循 PEP 8 風格指南(第3頁)
    • 做法 03 搞清楚 bytes、str與 unicode 之間的差異(第5頁)
    • 做法 04 撰寫輔助函式而非複雜的運算式(第9頁)
    • 做法 05 知道如何切割序列(第12頁)
    • 做法 06 避免在單一切片中使用 start、end 與 stride(第15頁)
    • 做法 07 使用串列概括式而非 map 和 filter(第17頁)
    • 做法 08 在串列概括式中不要使用超過兩個運算式(第18頁)
    • 做法 09 考慮使用產生器運算式取代大型概括式(第21頁)
    • 做法 10 優先選用 enumerate 而非 range(第23頁)
    • 做法 11 使用 zip 來平行處理迭代器(第24頁)
    • 做法 12 避免在 for 或 while 迴圈之後使用 else 區塊(第26頁)
    • 做法 13 善用 try/except/else/finally 中的每個區塊(第29頁)
  • 第2章 函式(第33頁)
    • 做法 14 優先選用例外而非回傳 None(第33頁)
    • 做法 15 知道 Closures 如何與變數範疇互動(第36頁)
    • 做法 16 考慮使用產生器而非回傳串列(第41頁)
    • 做法 17 迭代引數時要做好防備(第43頁)
    • 做法 18 以可變的位置引數來減少視覺雜訊(第48頁)
    • 做法 19 以關鍵字引數提供選擇性的行為(第51頁)
    • 做法 20 使用 None 與 Docstrings 來指定動態的預設引數(第55頁)
    • 做法 21 強制使用僅限關鍵字引數來讓程式碼更清楚易懂(第58頁)
  • 第3章 類別與繼承(第63頁)
    • 做法 22 優先選用輔助類別而非使用字典或元組來管理記錄(第63頁)
    • 做法 23 接受函式作為簡單的介面,而非使用類別(第69頁)
    • 做法 24 使用 @classmethod 多型機制來建構泛用物件(第73頁)
    • 做法 25 使用 super 來初始化父類別(第79頁)
    • 做法 26 多重繼承只用於 Mix-in 工具類別(第83頁)
    • 做法 27 優先選用公開屬性而非私有屬性(第88頁)
    • 做法 28 繼承 collections.abc 以建立自訂的容器型別(第94頁)
  • 第4章 元類別與屬性(第99頁)
    • 做法 29 使用普通的屬性而非 Get 或 Set 方法(第99頁)
    • 做法 30 考慮使用 @property 而非重構屬性(第104頁)
    • 做法 31 使用描述器來建立可重用的 @property 方法(第108頁)
    • 做法 32 使用 __getattr__、__getattribute__與__setattr__ 來建立惰性屬性(第114頁)
    • 做法 33 以元類別來驗證子類別(第120頁)
    • 做法 34 以 Metaclasses 註冊類別的存在(第122頁)
    • 做法 35 以 Metaclasses 來注釋類別屬性(第127頁)
  • 第5章 共時與平行處理(第131頁)
    • 做法 36 使用 subprocess 來管理子行程(第132頁)
    • 做法 37 執行緒用於阻斷式的 I/O,避免用於平行處理(第136頁)
    • 做法 38 使用 Lock 來避免執行緒中的資料競態(第141頁)
    • 做法 39 使用 Queue 來協調執行緒之間的工作(第145頁)
    • 做法 40 考慮使用 Coroutines 來共時執行許多函式(第152頁)
    • 做法 41 考慮使用 concurrent.futures 來達成真正的平行處理(第162頁)
  • 第6章 內建模組(第167頁)
    • 做法 42 以 functools.wraps 定義函式裝飾器(第167頁)
    • 做法 43 考慮使用 contextlib 與 with 述句來建立可重用的 try/finally 行為(第170頁)
    • 做法 44 用 copyreg 來使 pickle 更可靠(第174頁)
    • 做法 45 本地時鐘使用 datetime 而非 time(第180頁)
    • 做法 46 使用內建的演算法與資料結構(第185頁)
    • 做法 47 精確度很重要時就使用 decimal(第190頁)
    • 做法 48 知道去哪找社群建置的模組(第193頁)
  • 第7章 協作(第195頁)
    • 做法 49 為每個函式、類別與模組撰寫 Docstrings(第195頁)
    • 做法 50 使用套件來組織模組並提供穩定的 API(第200頁)
    • 做法 51 定義一個根例外來隔離呼叫者與 API(第205頁)
    • 做法 52 知道如何打破循環依存性(第209頁)
    • 做法 53 使用虛擬環境來建立孤立且可重現的依存性(第214頁)
  • 第8章 推出產品(第221頁)
    • 做法 54 考慮使用以模組為範疇的程式碼來設置部署環境(第221頁)
    • 做法 55 使用 repr 字串作為除錯輸出(第224頁)
    • 做法 56 所有的東西都使用 unittest 來測試(第227頁)
    • 做法 57 考慮使用 pdb 來進行互動式的除錯(第230頁)
    • 做法 58 最佳化之前先進行效能評測(第232頁)
    • 做法 59 使用 tracemalloc 來了解記憶體用量或是否有洩漏(第237頁)
  • 索引(第241頁)
紙本書 NT$ 450
單本電子書
NT$ 315

還沒安裝 HyRead 3 嗎?馬上免費安裝~
QR Code