Python進階編程:編寫更高效、優雅的Python代碼( 簡體 字) | |
作者:劉宇宙,謝東,劉艷 | 類別:1. -> 程式設計 -> Python |
出版社:機械工業出版社 | 3dWoo書號: 54442 詢問書籍請說出此書號! 有庫存 NT售價: 645 元 |
出版日:5/1/2021 | |
頁數:553 | |
光碟數:0 | |
站長推薦: | |
印刷:黑白印刷 | 語系: ( 簡體 字 ) |
ISBN:9787111678502 | 加入購物車 │加到我的最愛 (請先登入會員) |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社) | |
推薦序一
推薦序二 前言 第0章 Python總覽 1 0.1 Python總體架構 1 0.2 Python源碼組織 2 0.3 Python對象初探 3 0.3.1 Python內的對象 3 0.3.2 對象的分類 4 0.3.3 對象機制的基石—PyObject 5 0.3.4 定長對象和變長對象 5 0.3.5 類型對象 6 0.3.6 類型的類型 7 0.3.7 對象的創建 8 0.3.8 對象的行為 8 0.3.9 對象的多態性 9 0.3.10 引用計數 10 0.4 本章小結 11 第1章 數字對象 12 1.1 整數對象 12 1.1.1 PyLongObject對象 12 1.1.2 小整數對象 14 1.1.3 大整數對象 14 1.2 數字格式化輸出 14 1.3 進制轉換 16 1.4 數字運算 17 1.4.1 四舍五入運算 17 1.4.2 浮點數運算 19 1.4.3 復數運算 20 1.4.4 分數運算 22 1.4.5 大型數組運算 22 1.4.6 矩陣與線性代數運算 25 1.5 字節到大整數的打包與解包 27 1.6 無窮大與NaN 28 1.7 隨機數 30 1.8 本章小結 32 第2章 字符串 33 2.1 字符串對象解析 33 2.1.1 字符串對象的intern機制 33 2.1.2 字符串操作效率 34 2.2 字符串操作 35 2.2.1 字符串分割 35 2.2.2 刪除不需要的字符 36 2.2.3 字符串清理 37 2.2.4 字符串對齊 39 2.2.5 字符串拼接 40 2.2.6 字符串插入 42 2.2.7 字符串格式化 43 2.2.8 處理HTML和XML文本 43 2.3 字符串匹配 44 2.3.1 字符串開頭或結尾匹配 44 2.3.2 用Shell通配符匹配字符串 46 2.3.3 字符串匹配和搜索 47 2.3.4 最短匹配 49 2.3.5 多行匹配 50 2.4 字符串搜索 50 2.4.1 字符串搜索替換 50 2.4.2 字符串忽略大小寫的搜索替換 51 2.5 將Unicode文本標準化 52 2.6 在正則表達式中使用Unicode字符 54 2.7 令牌解析 55 2.8 簡單的遞歸下降分析器實現 57 2.9 字節字符串操作 64 2.10 本章小結 66 第3章 數據結構 67 3.1 序列 67 3.1.1 序列對象解析 67 3.1.2 序列解壓 68 3.1.3 序列去重并保持順序 70 3.1.4 序列元素統計 71 3.1.5 過濾序列元素 72 3.1.6 序列元素名稱映射 74 3.1.7 轉換并計算數據 76 3.2 字典 77 3.2.1 字典對象解析 77 3.2.2 字典映射 79 3.2.3 字典排序 81 3.2.4 字典運算 81 3.2.5 字典查找 83 3.2.6 通過關鍵字排序字典 84 3.2.7 字典提取 85 3.2.8 字典合并 86 3.3 可迭代對象操作 88 3.3.1 可迭代對象解壓 88 3.3.2 保留最后N個元素 89 3.3.3 記錄分組 90 3.4 查找最大或最小的N個元素 91 3.5 實現一個優先級隊列 92 3.6 命名切片 95 3.7 排序不支持原生比較的對象 96 3.8 本章小結 97 第4章 迭代器與生成器 98 4.1 迭代操作 98 4.1.1 手動遍歷迭代器 98 4.1.2 代理迭代 99 4.1.3 實現迭代協議 100 4.1.4 反向迭代 102 4.1.5 迭代器切片 104 4.1.6 跳過可迭代對象的開始部分 104 4.1.7 排列組合的迭代 106 4.1.8 序列上索引值迭代 107 4.1.9 多個序列迭代 109 4.1.10 集合元素的迭代 111 4.1.11 順序迭代合并后的排序迭代對象 112 4.1.12 迭代器代替while無限循環 113 4.2 使用生成器創建新的迭代模式 113 4.3 帶有外部狀態的生成器函數 115 4.4 創建數據處理管道 116 4.5 展開嵌套的序列 118 4.6 本章小結 120 第5章 文件與I/O 121 5.1 讀/寫操作 121 5.1.1 讀/寫文本數據 121 5.1.2 讀/寫字節數據 123 5.1.3 讀/寫壓縮文件 124 5.2 文件操作 126 5.2.1 文件的寫入 126 5.2.2 操作文件路徑名 126 5.2.3 文件檢查 127 5.2.4 文件列表獲取 128 5.2.5 忽略文件名編碼 129 5.2.6 打印不合法的文件名 130 5.2.7 文件編碼變更 132 5.2.8 在文本文件中寫入字節 133 5.2.9 文件描述符包裝 134 5.2.10 創建臨時文件和文件夾 135 5.2.11 文件迭代 137 5.2.12 二進制文件映射 137 5.3 使用分隔符或行終止符打印 139 5.4 字符串的I/O操作 140 5.5 可變緩沖區中二進制數據的讀取 141 5.6 串行端口的數據通信 143 5.7 對象序列化 143 5.8 本章小結 146 第6章 數據編碼及處理 147 6.1 數據讀/寫 147 6.1.1 CSV數據讀/寫 147 6.1.2 JSON數據讀/寫 151 6.1.3 二進制數組數據讀/寫 155 6.1.4 嵌套和可變長二進制數據讀取 158 6.2 XML數據解析 166 6.2.1 簡單XML數據解析 166 6.2.2 解析XML文檔 167 6.2.3 修改XML 169 6.3 字典轉換為XML 170 6.4 與關系型數據庫的交互 172 6.5 編碼/解碼 174 6.5.1 十六進制數編碼和解碼 174 6.5.2 編碼/解碼Base64數據 175 6.6 本章小結 176 第7章 函數 177 7.1 函數定義 177 7.1.1 有默認參數的函數定義 177 7.1.2 匿名或內聯函數定義 180 7.2 函數的參數 181 7.2.1 接收任意數量參數 181 7.2.2 接收關鍵字參數 183 7.2.3 為參數增加元信息 184 7.2.4 減少參數個數 185 7.3 返回多個值的函數 187 7.4 變量處理 188 7.4.1 匿名函數捕獲變量值 188 7.4.2 訪問閉包中定義的變量 190 7.5 類轉換為函數 192 7.6 回調函數 193 7.6.1 有額外狀態信息的回調函數 193 7.6.2 內聯回調函數 196 7.7 本章小結 198 第8章 類與對象 199 8.1 對象處理 199 8.1.1 對象顯示 199 8.1.2 有效創建大量對象 200 8.1.3 由字符串調用對象 201 8.2 自定義格式化字符串 202 8.3 上下文管理協議 203 8.4 類的處理 205 8.4.1 封裝屬性名 205 8.4.2 調用父類方法 207 8.4.3 擴展property 213 8.4.4 創建新的類或實例屬性 217 8.4.5 定義多個構造器 219 8.4.6 類中的比較操作 220 8.5 屬性處理 222 8.5.1 可管理屬性創建 222 8.5.2 延遲計算屬性 226 8.5.3 屬性的代理訪問 229 8.6 數據結構的初始化 233 8.7 接口或者抽象基類定義 236 8.8 數據模型的類型約束 238 8.9 自定義容器 243 8.10 不調用init方法的實例創建 246 8.11 利用Mixin擴展類功能 247 8.12 狀態對象實現 249 8.13 設計模式處理 252 8.13.1 訪問者模式 252 8.13.2 不用遞歸實現訪問者模式 255 8.14 數據結構的內存管理 259 8.15 創建緩存 262 8.16 本章小結 266 第9章 元編程 267 9.1 裝飾器 267 9.1.1 函數添加裝飾器 267 9.1.2 裝飾器中保留函數元信息 269 9.1.3 解除裝飾器 271 9.1.4 帶參數的裝飾器 272 9.1.5 裝飾器自定義屬性 273 9.1.6 帶可選參數的裝飾器 276 9.1.7 函數的類型檢查 278 9.1.8 類中定義裝飾器 281 9.1.9 裝飾器定義為類 282 9.1.10 類和靜態方法的裝飾器 285 9.1.11 給函數增加參數 287 9.1.12 擴充類的功能 289 9.2 元類 291 9.2.1 控制實例創建 291 9.2.2 元類定義可選參數 293 9.3 類的屬性定義順序 295 9.4 強制參數簽名 297 9.5 強制使用編程規約 300 9.6 以編程方式定義類 303 9.7 初始化類的成員 306 9.8 利用注解實現方法重載 307 9.9 避免重復的屬性方法 313 9.10 定義上下文管理器 314 9.11 局部變量域中執行代碼 316 9.12 Python源碼解析 319 9.13 Python字節碼拆解 322 9.14 本章小結 324 第10章 模塊與包 325 10.1 模塊處理 325 10.1.1 模塊層級 325 10.1.2 控制模塊的導入 326 10.1.3 重新加載模塊 327 10.1.4 通過字符串名導入模塊 328 10.1.5 遠程加載模塊 329 10.1.6 導入模塊的同時修改模塊 346 10.2 讀取包中的數據文件 348 10.3 將文件夾加入sys.path 349 10.4 安裝私有的包 350 10.5 創建新的Python環境 350 10.6 分發包 352 10.7 本章小結 353 第11章 網絡編程 354 11.1 與HTTP服務交互 354 11.2 創建服務器 357 11.2.1 TCP服務器 357 11.2.2 UDP服務器 360 11.3 通過CIDR地址生成對應的IP地址集 361 11.4 REST接口創建 363 11.5 遠程調用 367 11.5.1 遠程方法調用 367 11.5.2 通過XML-RPC遠程調用 371 11.6 不同Python解釋器之間的交互 373 11.7 客戶端認證 374 11.8 Socket文件描述符傳遞 376 11.9 事件驅動的I/O 380 11.10 大型數組發送與接收 385 11.11 本章小結 387 第12章 并發編程 388 12.1 線程處理 388 12.1.1 線程的啟動與停止 388 12.1.2 線程判斷 391 12.1.3 線程間通信 394 12.1.4 線程加鎖 398 12.1.5 防止死鎖 401 12.1.6 線程狀態信息保存 404 12.1.7 創建線程池 405 12.2 并行編程 408 12.3 全局鎖問題 412 12.4 Actor任務定義 414 12.5 消息發布/訂閱模型 417 12.6 生成器代替線程 420 12.7 線程隊列輪詢 427 12.8 守護進程 429 12.9 本章小結 432 第13章 腳本編程與系統管理 433 13.1 腳本接收 433 13.2 終止程序 434 13.3 解析命令行選項 434 13.4 彈出密碼輸入提示 436 13.5 執行外部命令 437 13.6 文件操作 439 13.6.1 文件和目錄的復制或移動 439 13.6.2 創建和解壓歸檔文件 440 13.6.3 文件查找 441 13.6.4 配置文件讀取 442 13.7 添加日志 444 13.7.1 腳本增加日志功能 444 13.7.2 函數庫增加日志功能 446 13.8 實現計時器 447 13.9 內存和CPU監測 449 13.10 啟動Web瀏覽器 450 13.11 本章小結 451 第14章 測試、調試和異常 452 14.1 測試 452 14.1.1 stdout輸出 452 14.1.2 對象打補丁 453 14.1.3 測試異常 455 14.1.4 記錄測試結果 457 14.1.5 性能測試 458 14.1.6 測試失敗處理 460 14.2 異常處理 461 14.2.1 捕獲所有異常 461 14.2.2 處理多個異常 462 14.2.3 自定義異常 464 14.2.4 拋出新的異常 466 14.2.5 異常重新拋出 468 14.2.6 警告信息 468 14.3 程序調試 470 14.4 加速程序運行 472 14.5 實戰—自然語言處理 476 14.6 本章小結 502 第15章 Python的內存管理機制 503 15.1 Python內存架構 503 15.2 小塊空間的內存池 505 15.2.1 block 505 15.2.2 pool 506 15.2.3 arena 506 15.2.4 內存池 507 15.3 循環引用的垃圾收集 509 15.3.1 引用計數與垃圾收集 509 15.3.2 三色標記模型 510 15.4 Python垃圾收集 511 15.4.1 可收集對象鏈表 511 15.4.2 分代垃圾收集 513 15.4.3 Python中的標記—清除方法 514 15.5 實戰——內存監控 516 15.6 本章小結 520 第16章 性能優化與實踐 521 16.1 優化的規則 521 16.1.1 先使程序可以正常工作 521 16.1.2 從用戶的角度進行 522 16.1.3 保證代碼易讀 522 16.2 優化策略 523 16.2.1 尋找其他原因 523 16.2.2 度量硬件 523 16.2.3 編寫速度測試代碼 523 16.3 查找瓶頸 524 16.3.1 剖析CPU使用情況 524 16.3.2 剖析內存使用情況 528 16.4 降低復雜度 530 16.4.1 測量回路復雜度 530 16.4.2 測量大O記號 530 16.4.3 簡化 531 16.5 實戰——爬蟲程序的性能優化 532 16.6 本章小結 537 本書將幫助讀者系統掌握編寫高效、優雅的Python代碼的方法,快速成長為一位高水平的Python開發工程師。
作者是Python編程領域的資深開發工程師,有多年的Python開發經驗,本書得到了行業里15位技術專家的高度評價。 為了幫助讀者編寫出高效的Python代碼,本書不僅從源代碼的角度系統地講解了Python的語法,讓讀者能知其然并知其所以然,而且結合具體的應用需求,對并發編程、性能優化、測試與調試、異常處理、內存管理等Python開發中的高級知識進行了詳細的講解。 為了指導讀者編寫出更優雅的Python代碼,本書針對具體問題給出了大量的實例代碼并給出了編碼風格上的方法和建議。 如果你是沒有Python編程經驗的新人,你將通過本書系統掌握Python語法及其背后的原理,并從一開始就養成良好的編碼習慣;如果你是有一定Python編程經驗的老手,你將通過本書掌握各種Python編程中的高級知識,同時領略到優雅的編碼風格和技巧。 |