流暢的python PDF |網盤下載內附提取碼

點擊此處下載
提取碼:z14j正則表達式

資料簡介:
流暢的Python 致力於幫助Python開發人員挖掘這門語言及相關程序庫的優質特性,避免重複勞動,同時寫出簡潔、流暢、易讀、易維護,而且具備地道Python風格的代碼。流暢的Python 尤爲深刻探討了Python語言的不錯用法,涵蓋數據結構、Python風格的對象、並行與併發,以及元編程等不一樣的方面。
 
資料目錄:
前言 xvii 部分序幕 第1 章 Python 數據模型2 1.1一摞 Python 風格的紙牌3 1.2如何使用特殊方法6 1.2.1模擬數值類型7 1.2.2字符串表示形式9 1.2.3算術運算符10 1.2.4自定義的布爾值10 1.3特殊方法一覽10 1.4爲何 len 不是普通方法12 1.5本章小結12 1.6延伸閱讀13 第二部分數據結構 第2 章 序列構成的數組16 2.1內置序列類型概覽17 2.2列表推導和生成器表達式18 2.2.1列表推導和可讀性18 2.2.2列表推導同 filter 和 map 的比較20 2.2.3笛卡兒積20 2.2.4生成器表達式21 2.3元組不單單是不可變的列表22 2.3.1元組和記錄23 2.3.2元組拆包23 2.3.3嵌套元組拆包25 2.3.4具名元組26 2.3.5做爲不可變列表的元組27 2.4切片28 2.4.1爲何切片和區間會忽略後一個元素28 2.4.2對對象進行切片29 2.4.3多維切片和省略30 2.4.4給切片賦值31 2.5對序列使用 + 和 *31 2.6序列的增量賦值33 2.7list.sort 方法和內置函數 sorted36 2.8用 bisect 來管理已排序的序列37 2.8.1用 bisect 來搜索38 2.8.2用 bisect.insort 插入新元素40 2.9當列表不是時41 2.9.1數組41 2.9.2內存視圖44 2.9.3NumPy 和 SciPy45 2.9.4雙向隊列和其餘形式的隊列47 2.10本章小結49 2.11延伸閱讀50 第3 章 字典和集合54 3.1泛映射類型54 3.2字典推導56 3.3常見的映射方法57 3.4映射的彈性鍵查詢61 3.4.1defaultdict :處理找不到的鍵的一個選擇61 3.4.2特殊方法 missing62 3.5字典的變種65 3.6子類化 UserDict65 3.7不可變映射類型67 3.8集合論68 3.8.1集合字面量69 3.8.2集合推導71 3.8.3集合的操做71 3.9dict 和 set 的背後73 3.9.1一個關於效率的實驗74 3.9.2字典中的散列表75 3.9.3dict 的實現及其致使的結果78 3.9.4set 的實現以及致使的結果80 3.10本章小結80 3.11延伸閱讀81 第4 章 文本和字節序列83 4.1字符問題84 4.2字節概要85 4.3基本的編解碼器88 4.4瞭解編解碼問題89 4.4.1處理 UnicodeEncodeError90 4.4.2處理 UnicodeDecodeError90 4.4.3使用預期以外的編碼加載模塊時拋出的 SyntaxError91 4.4.4如何找出字節序列的編碼92 4.4.5BOM:有用的鬼符93 4.5處理文本文件94 4.6爲了正確比較而規範化 Unicode 字符串99 4.6.1大小寫摺疊101 4.6.2規範化文本匹配實用函數102 4.6.3「規範化」:去掉變音符號103 4.7Unicode 文本排序105 4.8Unicode 數據庫108 4.9支持字符串和字節序列的雙模式 API109 4.9.1正則表達式中的字符串和字節序列109 4.9.2os 函數中的字符串和字節序列111 4.10本章小結112 4.11延伸閱讀113 第三部分把函數視做對象 第5 章 一等函數118 5.1把函數視做對象119 5.2高階函數120 5.3匿名函數122 5.4可調用對象122 5.5用戶定義的可調用類型123 5.6函數內省124 5.7從定位參數到僅限關鍵字參數126 5.8獲取關於參數的信息127 5.9函數註解131 5.10支持函數式編程的包132 5.10.1operator 模塊132 5.10.2使用 functools.partial 凍結參數135 5.11本章小結137 5.12延伸閱讀137 第6 章 使用一等函數實現設計模式141 6.1案例分析:重構「策略」模式142 6.1.1經典的「策略」模式142 6.1.2使用函數實現「策略」模式145 6.1.3選擇策略:簡單的方式148 6.1.4找出模塊中的所有策略149 6.2「命令」模式150 6.3本章小結151 6.4延伸閱讀152 第7 章 函數裝飾器和閉包154 7.1裝飾器基礎知識155 7.2Python 什麼時候執行裝飾器156 7.3使用裝飾器改進「策略」模式157 7.4變量做用域規則159 7.5閉包161 7.6nonlocal 聲明164 7.7實現一個簡單的裝飾器165 7.8標準庫中的裝飾器168 7.8.1使用 functools.lru_cache 作備忘168 7.8.2單分派泛函數170 7.9疊放裝飾器172 7.10參數化裝飾器173 7.10.1一個參數化的註冊裝飾器173 7.10.2參數化 clock 裝飾器175 7.11本章小結177 7.12延伸閱讀178 第四部分面向對象慣用法 第8 章 對象引用、可變性和垃圾回收182 8.1變量不是盒子183 8.2標識、相等性和別名184 8.2.1在 == 和 is 之間選擇185 8.2.2元組的相對不可變性186 8.3默認作淺複製187 8.4函數的參數做爲引用時190 8.4.1不要使用可變類型做爲參數的默認值191 8.4.2防護可變參數193 8.5del 和垃圾回收195 8.6弱引用196 8.6.1WeakValueDictionary 簡介197 8.6.2弱引用的侷限199 8.7Python 對不可變類型施加的把戲199 8.8本章小結201 8.9延伸閱讀201 第9 章 符合 Python 風格的對象205 9.1對象表示形式206 9.2再談向量類206 9.3備選構造方法208 9.4classmethod 與 staticmethod209 9.5格式化顯示210 9.6可散列的 Vector2d213 9.7Python 的私有屬性和「受保護的」屬性218 9.8使用 slots 類屬性節省空間220 9.9覆蓋類屬性222 9.10本章小結224 9.11延伸閱讀225 第10 章 序列的修改、散列和切片229 10.1Vector 類:用戶定義的序列類型230 10.2Vector 類第 1 版:與 Vector2d 類兼容230 10.3協議和鴨子類型232 10.4Vector 類第 2 版:可切片的序列233 10.4.1切片原理234 10.4.2能處理切片的 getitem 方法236 10.5Vector 類第 3 版:動態存取屬性237 10.6Vector 類第 4 版:散列和快速等值測試240 10.7Vector 類第 5 版:格式化244 10.8本章小結251 10.9延伸閱讀251 第11 章 接口:從協議到抽象基類256 11.1Python 文化中的接口和協議257 11.2Python 喜歡序列258 11.3使用猴子補丁在運行時實現協議260 11.4Alex Martelli 的水禽262 11.5定義抽象基類的子類266 11.6標準庫中的抽象基類267 11.6.1collections.abc 模塊中的抽象基類267 11.6.2抽象基類的數字塔269 11.7定義並使用一個抽象基類270 11.7.1抽象基類句法詳解273 11.7.2定義 Tombola 抽象基類的子類274 11.7.3Tombola 的虛擬子類276 11.8Tombola 子類的測試方法278 11.9Python 使用 register 的方式281 11.10鵝的行爲有可能像鴨子281 11.11本章小結283 11.12延伸閱讀284 第12 章 繼承的優缺點289 12.1子類化內置類型很麻煩289 12.2多重繼承和方法解析順序292 12.3多重繼承的真實應用296 12.4處理多重繼承298 12.5一個現代示例:Django 通用視圖中的混入301 12.6本章小結304 12.7延伸閱讀304 第13 章 正確重載運算符307 13.1運算符重載基礎308 13.2一元運算符308 13.3重載向量加法運算符 +310 13.4重載標量乘法運算符 *315 13.5衆多比較運算符318 13.6增量賦值運算符321 13.7本章小結325 13.8延伸閱讀326 第五部分控制流程 第14 章 可迭代的對象、迭代器和生成器330 14.1Sentence 類第 1 版:單詞序列331 14.2可迭代的對象與迭代器的對比334 14.3Sentence 類第 2 版:典型的迭代器337 14.4Sentence 類第 3 版:生成器函數339 14.5Sentence 類第 4 版:惰性實現343 14.6Sentence 類第 5 版:生成器表達式344 14.7什麼時候使用生成器表達式345 14.8另外一個示例:等差數列生成器346 14.9標準庫中的生成器函數349 14.10Python 3.3 中新出現的句法: yield from357 14.11可迭代的歸約函數358 14.12深刻分析 iter 函數359 14.13案例分析:在數據庫轉換工具中使用生成器360 14.14把生成器當成協程362 14.15本章小結362 14.16延伸閱讀363 第15 章 上下文管理器和 else 塊368 15.1先作這個,再作那個: if 語句以外的 else 塊369 15.2上下文管理器和 with 塊370 15.3contextlib 模塊中的實用工具374 15.4使用 @contextmanager375 15.5本章小結378 15.6延伸閱讀378 第16 章 協程381 16.1生成器如何進化成協程382 16.2用做協程的生成器的基本行爲382 16.3示例:使用協程計算移動平均值385 16.4預激協程的裝飾器386 16.5終止協程和異常處理388 16.6讓協程返回值391 16.7使用 yield from393 16.8yield from 的意義398 16.9使用案例:使用協程作離散事件仿真403 16.9.1離散事件仿真簡介403 16.9.2出租車隊運營仿真404 16.10本章小結410 16.11延伸閱讀411 第17 章 使用期物處理併發416 17.1示例:網絡下載的三種風格416 17.1.1依序下載的腳本418 17.1.2使用 concurrent.futures 模塊下載420 17.1.3期物在哪裏421 17.2阻塞型 I/O 和 GIL424 17.3使用 concurrent.futures 模塊啓動進程424 17.4實驗 Executor.map 方法426 17.5顯示下載進度並處理錯誤429 17.5.1flags2 系列示例處理錯誤的方式433 17.5.2使用 futures.as_completed 函數435 17.5.3線程和多進程的替代方案437 17.6本章小結437 17.7延伸閱讀438 第18 章 使用 asyncio 包處理併發442 18.1線程與協程對比443 18.1.1asyncio.Future :故意不阻塞448 18.1.2從期物、任務和協程中產出449 18.2使用 asyncio 和 aiohttp 包下載450 18.3避免阻塞型調用454 18.4改進 asyncio 下載腳本456 18.4.1使用 asyncio.as_completed 函數456 18.4.2使用 Executor 對象,防止阻塞事件循環461 18.5從回調到期物和協程462 18.6使用 asyncio 包編寫服務器466 18.6.1使用 asyncio 包編寫 TCP 服務器467 18.6.2使用 aiohttp 包編寫 Web 服務器471 18.6.3更好地支持併發的智能客戶端474 18.7本章小結475 18.8延伸閱讀476 第六部分元編程 第19 章 動態屬性和特性482 19.1使用動態屬性轉換數據483 19.1.1使用動態屬性訪問 JSON 類數據485 19.1.2處理無效屬性名487 19.1.3使用 new 方法以靈活的方式建立對象488 19.1.4使用 shelve 模塊調整 OSCON 數據源的結構490 19.1.5使用特性獲取連接的記錄493 19.2使用特性驗證屬性498 19.2.1LineItem 類第 1 版:表示訂單中商品的類498 19.2.2LineItem 類第 2 版:能驗證值的特性499 19.3特性全解析500 19.3.1特性會覆蓋實例屬性501 19.3.2特性的文檔503 19.4定義一個特性工廠函數504 19.5處理屬性刪除操做506 19.6處理屬性的重要屬性和函數507 19.6.1影響屬性處理方式的特殊屬性507 19.6.2處理屬性的內置函數508 19.6.3處理屬性的特殊方法509 19.7本章小結510 19.8延伸閱讀510 第20 章 屬性描述符514 20.1描述符示例:驗證屬性514 20.1.1LineItem 類第 3 版:一個簡單的描述符515 20.1.2LineItem 類第 4 版:自動獲取儲存屬性的名稱519 20.1.3LineItem 類第 5 版:一種新型描述符524 20.2覆蓋型與非覆蓋型描述符對比526 20.2.1覆蓋型描述符528 20.2.2沒有 get 方法的覆蓋型描述符529 20.2.3非覆蓋型描述符530 20.2.4在類中覆蓋描述符531 20.3方法是描述符531 20.4描述符用法建議533 20.5描述符的文檔字符串和覆蓋刪除操做534 20.6本章小結535 20.7延伸閱讀536 第21 章 類元編程538 21.1類工廠函數539 21.2定製描述符的類裝飾器541 21.3導入時和運行時比較543 21.4元類基礎知識547 21.5定製描述符的元類552 21.6元類的特殊方法 prepare554 21.7類做爲對象556 21.8本章小結557 21.9延伸閱讀557 結語560 附錄A 輔助腳本563 Python術語表588 做者簡介600 關於封面600
相關文章
相關標籤/搜索