新到貨2本75折
Effective Python:編寫高質量Python代碼的90個有效方法(原書第2版)

Effective Python:編寫高質量Python代碼的90個有效方法(原書第2版)

  • 定價:774
  • 優惠價:87673
  • 運送方式:
  • 臺灣與離島
  • 海外
  • 可配送點:台灣、蘭嶼、綠島、澎湖、金門、馬祖
  • 可取貨點:台灣、蘭嶼、綠島、澎湖、金門、馬祖
載入中...
  • 分享
 

內容簡介

本書能夠幫你掌握真正的 Pythonic 程式設計方式,充分發揮 Python 的優勢,寫出健壯而高效的代碼。Scott Meyers在其名著Effective C++中開創了一種用簡明的場景實例來講述程式設計經驗的方式,本書作者Brett Slatkin也沿用這種方式,向大家講解 Python 的程式設計原則、開發技巧與便捷方案,形成 90 條建議並配有實用的範例代碼,以便大家能夠紮實地掌握 Python 語言。
 
【本書的關鍵內容包括】:
 31 條新的實用建議,這些建議涵蓋 Python 開發的幾個主要方面。
 對各種語句、運算式與內置類型做了詳細講解與演示。
 怎樣寫出意圖清晰、便於複用而且不容易出現 bug 的函數。
 怎樣更好地使用推導機制與生成器函數。
 怎樣用類與介面準確展示相關的行為。
 怎樣避開元類與動態屬性中的一些陷阱。
 怎樣用更高效且更清晰的方法寫出併發與並行程式。
 怎樣優化程式性能並提升代碼品質。
 用於改進調試與測試工作的技術與內置模組。
 與協作開發有關的工具和經驗。


 

作者介紹

Brett Slatkin是Google首席軟體工程師,他是Google Surveys的聯合技術創始人,也是PubSubHubbub協議的共同創造者之一。此外,Slatkin還發佈了Google的第一個雲計算產品——App Engine。早在15年前,Slatkin就開始在工作中使用Python管理Google大量的伺服器群。他擁有紐約哥倫比亞大學電腦工程專業學士學位。

 

目錄

第1章 培養Pythonic思維 // 1
第1條 查詢自己使用的Python版本 // 1
第2條 遵循PEP 8風格指南 // 2
第3條 瞭解bytes與str的區別 // 5
第4條 用支援插值的f-string取代C風格的格式字串與str.format方法 // 9
第5條 用輔助函數取代複雜的運算式 // 19
第6條 把資料結構直接拆分到多個變數裡,不要專門通過下標訪問 // 21
第7條 儘量用enumerate取代range // 25
第8條 用zip函數同時遍歷兩個反覆運算器 // 26
第9條 不要在for與while迴圈後面寫else塊 // 28
第10條 用賦值運算式減少重複代碼 // 31
 
第2章 清單與字典 // 37
第11條 學會對序列做切片 // 37
第12條 不要在切片裡同時指定起止下標與步進 // 40
第13條 通過帶星號的unpacking操作來捕獲多個元素,不要用切片 // 42
第14條 用sort方法的key參數來表示複雜的排序邏輯 // 45
第15條 不要過分依賴給字典添加條目時所用的順序 // 51
第16條 用get處理鍵不在字典中的情況,不要使用in與KeyError // 56
第17條 用defaultdict處理內部狀態中缺失的元素,而不要用setdefault // 61
第18條 學會利用__missing__構造依賴鍵的預設值 // 63
 
第3章 函數 // 66
第19條 不要把函數返回的多個數值拆分到三個以上的變數中 // 66
第20條 遇到意外狀況時應該拋出異常,不要返回None // 69
第21條 瞭解如何在閉包裡面使用週邊作用域中的變數 // 71
第22條 用數量可變的位置參數給函數設計清晰的參數清單 // 75
第23條 用關鍵字參數來表示可選的行為 // 77
第24條 用None和docstring來描述預設值會變的參數 // 80
第25條 用只能以關鍵字指定和只能按位置傳入的參數來設計清晰的參數列表 // 83
第26條 用functools.wraps定義函數修飾器 // 88
 
第4章 推導與生成 // 91
第27條 用列表推導取代map與filter // 91
第28條 控制推導邏輯的子運算式不要超過兩個 // 93
第29條 用賦值運算式消除推導中的重複代碼 // 94
第30條 不要讓函數直接返回清單,應該讓它逐個生成列表裡的值 // 97
第31條 謹慎地反覆運算函數所收到的參數 // 100
第32條 考慮用生成器運算式改寫資料量較大的清單推導 // 104
第33條 通過yield from把多個生成器連起來用 // 106
第34條 不要用send給生成器注入數據 // 108
第35條 不要通過throw變換生成器的狀態 // 113
第36條 考慮用itertools拼裝反覆運算器與生成器 // 117
 
第5章 類與介面 // 122
第37條 用組合起來的類來實現多層結構,不要用嵌套的內置類型 // 122
第38條 讓簡單的介面接受函數,而不是類的實例 // 128
第39條 通過@classmethod多態來構造同一體系中的各類物件 // 131
第40條 通過super初始化超類 // 136
第41條 考慮用mix-in類來表示可組合的功能 // 140
第42條 優先考慮用public屬性工作表示應受保護的資料,不要用private屬性工作表示 // 144
第43條 自訂的容器類型應該從collections.abc繼承 // 149
 
第6章 元類與屬性 // 153
第44條 用純屬性與修飾器取代舊式的setter與getter方法 // 153
第45條 考慮用@property實現新的屬性訪問邏輯,不要急著重構原有的代碼 // 157
第46條 用描述符來改寫需要複用的@property方法 // 160
第47條 針對惰性屬性使用__getattr__、__getattribute__及__setattr__ // 165
第48條 用__init_subclass__驗證子類寫得是否正確 // 170
第49條 用__init_subclass__記錄現有的子類 // 177
第50條 用__set_name__給類屬性加注解 // 181
第51條 優先考慮通過類修飾器來提供可組合的擴充功能,不要使用元類 // 185
 
第7章 併發與並行 // 191
第52條 用subprocess管理子進程 // 192
第53條 可以用執行緒執行阻塞式I/O,但不要用它做平行計算 // 195
第54條 利用Lock防止多個執行緒爭用同一份資料 // 199
第55條 用Queue來協調各執行緒之間的工作進度 // 202
第56條 學會判斷什麼場合必須做併發 // 210
第57條 不要在每次fan-out時都新建一批Thread實例 // 214
第58條 學會正確地重構代碼,以便用Queue做併發 // 218
第59條 如果必須用執行緒做併發,那就考慮通過ThreadPoolExecutor實現 // 224
第60條 用協程實現高併發的I/O // 226
第61條 學會用asyncio改寫那些通過執行緒實現的I/O // 230
第62條 結合執行緒與協程,將代碼順利遷移到asyncio // 239
第63條 讓asyncio的事件迴圈保持暢通,以便進一步提升程式的回應能力 // 245
第64條 考慮用concurrent.futures實現真正的平行計算 // 248
 
第8章 穩定與性能 // 253
第65條 合理利用try/except/else/finally結構中的每個代碼塊 // 253
第66條 考慮用contextlib和with語句來改寫可複用的try/finally代碼 // 258
第67條 用datetime模組處理本地時間,不要用time模組 // 262
第68條 用copyreg實現可靠的pickle操作 // 265
第69條 在需要準確計算的場合,用decimal表示相應的數值 // 272
第70條 先分析性能,然後再優化 // 274
第71條 優先考慮用deque實現生產者-消費者佇列 // 278
第72條 考慮用bisect搜索已排序的序列 // 284
第73條 學會使用heapq製作優先順序佇列 // 286
第74條 考慮用memoryview與bytearray來實現無須拷貝的bytes操作 // 294
 
第9章 測試與調試 // 300
第75條 通過repr字串輸出調試資訊 // 301
第76條 在TestCase子類裡驗證相關的行為 // 304
第77條 把測試前、後的準備與清理邏輯寫在setUp、tearDown、setUpModule與tearDownModule中,以防用例之間互相干擾 // 309
第78條 用Mock來模擬受測代碼所依賴的複雜函數 // 312
第79條 把受測代碼所依賴的系統封裝起來,以便於模擬和測試 // 319
第80條 考慮用pdb做交互調試 // 322
第81條 用tracemalloc來掌握記憶體的使用與洩漏情況 // 326
 
第10章 協作開發 // 329
第82條 學會尋找由其他Python開發者所構建的模組 // 329
第83條 用虛擬環境隔離專案,並重建依賴關係 // 330
第84條 每一個函數、類與模組都要寫docstring // 335
第85條 用包來安排模組,以提供穩固的API // 339
第86條 考慮用模組級別的代碼配置不同的部署環境 // 344
第87條 為自編的模組定義根異常,讓調用者能夠專門處理與此API有關的異常 // 346
第88條 用適當的方式打破迴圈依賴關係 // 350
第89條 重構時考慮通過warnings提醒開發者API已經發生變化 // 355
第90條 考慮通過typing做靜態分析,以消除bug // 361
 

詳細資料

  • ISBN:9787111674023
  • 規格:平裝 / 367頁 / 16k / 19 x 26 x 1.83 cm / 普通級 / 單色印刷 / 初版
  • 出版地:中國

最近瀏覽商品

 

相關活動

  • 【科普、飲食、電腦】高寶電子書暢銷書展:人生就是選擇的總和,全展75折起
 

購物說明

溫馨提醒您:若您訂單中有購買簡體館無庫存/預售書或庫存於海外廠商的書籍,建議與其他商品分開下單,以避免等待時間過長,謝謝。

大陸出版品書況:因裝幀品質及貨運條件未臻完善,書況與台灣出版品落差甚大,封面老舊、出現磨痕、凹痕等均屬常態,故簡體字館除封面破損、內頁脫落...等較嚴重的狀態外,其餘所有商品將正常出貨。 

 

請注意,部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。

調貨時間:若您購買海外庫存之商品,於您完成訂購後,商品原則上約45個工作天內抵台(若有將延遲另行告知)。為了縮短等待的時間,建議您將簡體書與其它商品分開訂購,以利一般商品快速出貨。 

若您具有法人身份為常態性且大量購書者,或有特殊作業需求,建議您可洽詢「企業採購」。 

退換貨說明 

會員所購買的商品均享有到貨十天的猶豫期(含例假日)。退回之商品必須於猶豫期內寄回。 

辦理退換貨時,商品必須是全新狀態與完整包裝(請注意保持商品本體、配件、贈品、保證書、原廠包裝及所有附隨文件或資料的完整性,切勿缺漏任何配件或損毀原廠外盒)。退回商品無法回復原狀者,恐將影響退貨權益或需負擔部分費用。 

訂購本商品前請務必詳閱商品退換貨原則

  • 翦商作者新作79折
  • 針灸匠張寶旬