標籤:記憶體映射 mixin web瀏覽器 隨機播放 建立線程 11.2 rest 移動檔案 調試
:網盤下載
內容簡介 · · · · · ·
《Python Cookbook(第3版)中文版》介紹了Python應用在各個領域中的一些提示和方法,其主題涵蓋了資料結構和演算法,字串和文本,數字、日期和時間,迭代器和產生器,檔案和I/O,資料編碼與處理,函數,類與對象,元編程,模組和包,網路和Web編程,並發,實用指令碼和系統管理,測試、調試以及異常,C語言擴充等。
本書覆蓋了Python應用中的很多常見問題,並提出了通用的解決方案。書中包含了大量實用的編程技巧和範例程式碼,並在Python 3.3環境下進行了測試,可以很方便地應用到實際項目中去。此外,《Python Cookbook(第3版)中文版》還詳細講解瞭解決方案是如何工作的,以及為什麼能夠工作。
《Python Cookbook(第3版)中文版》非常適合具有一定編程基礎的Python程式員閱讀參考。
作者簡介 · · · · · ·
David Beazley是一位居住在芝加哥的獨立軟體開發人員以及圖書作者。他主要的工作在於編程工具,提供定製化的軟體開發服務,以及為軟體開發人員、科學家和工程師教授編程實踐課程。他最為人熟知的工作在於Python程式設計語言,他已為此建立了好幾個開源的軟體包(例如Swig和PLY),並且是備受讚譽的圖書Python Essential Reference的作者。他也對C、C++以及組合語言下的系統編程有著豐富的經驗。
Brain K. Jones是普林斯頓大學電腦系的一位系統管理員。
目錄 · · · · · ·目錄
第1章 資料結構和演算法 1
1.1 將序列分解為單獨的變數 1
1.2 從任意長度的可迭代對象中分解元素 3
1.3 儲存最後N個元素 5
1.4 找到最大或最小的N個元素 7
1.5 實現優先順序隊列 9
1.6 在字典中將鍵映射到多個值上 11
1.7 讓字典保持有序 13
1.8 與字典有關的計算問題 14
1.9 在兩個字典中尋找相同點 15
1.10 從序列中移除重複項且保持元素間順序不變 17
1.11 對切片命名 18
1.12 找出序列中出現次數最多的元素 20
1.13 通過公用鍵對字典列表排序 22
1.14 對不原生支援比較操作的對象排序 23
1.15 根據欄位將記錄分組 25
1.16 篩選序列中的元素 26
1.17 從字典中提取子集 29
1.18 將名稱映射到序列的元素中 30
1.19 同時對資料做轉換和換算 33
1.20 將多個映射合并為單個映射 34
第2章 字串和文本 37
2.1 針對任意多的分隔字元拆分字串 37
2.2 在字串的開頭或結尾處做文本匹配 38
2.3 利用Shell萬用字元做字串匹配 40
2.4 文字模式的匹配和尋找 42
2.5 尋找和替換文本 45
2.6 以不區分大小寫方式對文本做尋找和替換 47
2.7 定義實現最短匹配的Regex 48
2.8 編寫多行模式的Regex 49
2.9 將Unicode文本統一表示為規範形式 50
2.10 用Regex處理Unicode字元 52
2.11 從字串中去掉不需要的字元 53
2.12 文本過濾和清理 54
2.13 對齊文本字串 57
2.14 字串串連及合并 59
2.15 給字串中的變數名做插值處理 62
2.16 以固定的列數重新格式化文本 64
2.17 在文本中處理HTML和XML實體 66
2.18 文本分詞 67
2.19 編寫一個簡單的遞迴下降解析器 70
2.20 在位元組串上執行文本操作 80
第3章 數字、日期和時間 83
3.1 對數值進行取整 83
3.2 執行精確的小數計算 85
3.3 對數值做格式化輸出 87
3.4 同二進位、八進位和十六進位數打交道 89
3.5 從位元組串中打包和解包大整數 90
3.6 複數運算 92
3.7 處理無窮大和NaN 94
3.8 分數的計算 96
3.9 處理大型數組的計算 97
3.10 矩陣和線性代數的計算 101
3.11 隨機播放 103
3.12 時間換算 105
3.13 計算上周5的日期 107
3.14 找出當月的日期範圍 108
3.15 將字串轉換為日期 110
3.16 處理涉及到時區的日期問題 112
第4章 迭代器和產生器 114
4.1 手動訪問迭代器中的元素 114
4.2 委託迭代 115
4.3 用產生器建立新的迭代模式 116
4.4 實現迭代協議 118
4.5 反向迭代 121
4.6 定義帶有額外狀態的產生器函數 122
4.7 對迭代器做切片操作 123
4.8 跳過可迭代對象中的前一部分元素 124
4.9 迭代所有可能的組合或排列 127
4.10 以索引-值對的形式迭代序列 129
4.11 同時迭代多個序列 131
4.12 在不同的容器中進行迭代 133
4.13 建立處理資料的管道 134
4.14 扁平化處理嵌套型的序列 137
4.15 合并多個有序序列,再對整個有序序列進行迭代 139
4.16 用迭代器取代while迴圈 140
第5章 檔案和I/O 142
5.1 讀寫文本資料 142
5.2 將輸出重新導向到檔案中 145
5.3 以不同的分隔字元或行結尾符完成列印 145
5.4 讀寫位元據 146
5.5 對已不存在的檔案執行寫入操作 149
5.6 在字串上執行I/O操作 150
5.7 讀寫壓縮的資料檔案 151
5.8 對固定大小的記錄進行迭代 152
5.9 將位元據讀取到可變緩衝區中 153
5.10 對二進位檔案做記憶體映射 155
5.11 處理路徑名 157
5.12 檢測檔案是否存在 158
5.13 擷取目錄內容的列表 159
5.14 繞過檔案名稱編碼 161
5.15 列印無法解碼的檔案名稱 162
5.16 為已經開啟的檔案添加或修改編碼方式 164
5.17 將位元組資料寫入文字檔 166
5.18 將已有的檔案描述符封裝為檔案對象 167
5.19 建立臨時檔案和目錄 169
5.20 同串口進行通訊 171
5.21 序列化Python對象 172
第6章 資料編碼與處理 177
6.1 讀寫CSV資料 177
6.2 讀寫JSON資料 181
6.3 解析簡單的XML文檔 186
6.4 以增量方式解析大型XML檔案 188
6.5 將字典轉換為XML 192
6.6 解析、修改和重寫XML 194
6.7 用命名空間來解析XML文檔 196
6.8 同關係型資料庫進行互動 198
6.9 編碼和解碼十六進位數字 201
6.10 Base64編碼和解碼 202
6.11 讀寫二進位結構的數組 203
6.12 讀取嵌套型和大小可變的二進位結構 207
6.13 資料匯總和統計 218
第7章 函數 221
7.1 編寫可接受任意數量參數的函數 221
7.2 編寫只接受關鍵字參數的函數 223
7.3 將中繼資料資訊附加到函數參數上 224
7.4 從函數中返回多個值 225
7.5 定義帶有預設參數的函數 226
7.6 定義匿名或內嵌函式 229
7.7 在匿名函數中綁定變數的值 230
7.8 讓帶有N個參數的可調用對象以較少的參數形式調用 232
7.9 用函數替代只有單個方法的類 235
7.10 在回呼函數中攜帶額外的狀態 236
7.11 內聯回呼函數 240
7.12 訪問定義在閉包內的變數 242
第8章 類與對象 246
8.1 修改執行個體的字串表示 246
8.2 自訂字串的輸出格式 248
8.3 讓對象支援上下文管理協議 249
8.4 當建立大量執行個體時如何節省記憶體 251
8.5 將名稱封裝到類中 252
8.6 建立可管理的屬性 254
8.7 調用父類中的方法 259
8.8 在子類中擴充屬性 263
8.9 建立一種新形式的類屬性或執行個體屬性 267
8.10 讓屬性具有惰性求值的能力 271
8.11 簡化資料結構的初始化過程 274
8.12 定義一個介面或抽象基類 278
8.13 實現一種資料模型或類型系統 281
8.14 實現自訂的容器 287
8.15 委託屬性的訪問 291
8.16 在類中定義多個建構函式 296
8.17 不通過調用init來建立執行個體 298
8.18 用Mixin技術來擴充類定義 299
8.19 實現帶有狀態的對象或狀態機器 305
8.20 調用對象上的方法,方法名以字串形式給出 311
8.21 實現訪問者模式 312
8.22 實現非遞迴的訪問者模式 317
8.23 在環狀資料結構中管理記憶體 324
8.24 讓類支援比較操作 327
8.25 建立緩衝執行個體 330
第9章 元編程 335
9.1 給函數添加一個封裝 335
9.2 編寫裝飾器時如何儲存函數的中繼資料 337
9.3 對裝飾器進行解封裝 339
9.4 定義一個可接受參數的裝飾器 341
9.5 定義一個屬性可由使用者修改的裝飾器 342
9.6 定義一個能接收選擇性參數的裝飾器 346
9.7 利用裝飾器對函數參數強制執行類型檢查 348
9.8 在類中定義裝飾器 352
9.9 把裝飾器定義成類 354
9.10 把裝飾器作用到類和靜態方法上 357
9.11 編寫裝飾器為被封裝的函數添加參數 359
9.12 利用裝飾器給類定義打補丁 362
9.13 利用元類來控制執行個體的建立 364
9.14 擷取類屬性的定義順序 367
9.15 定義一個能接受選擇性參數的元類 370
9.16 在*args和**kwargs上強制規定一種參數簽名 372
9.17 在類中強制規定編碼約定 375
9.18 通過編程的方式來定義類 378
9.19 在定義的時候初始化類成員 382
9.20 通過函數註解來實現方法重載 384
9.21 避免出現重複的屬性方法 391
9.22 以簡單的方式定義上下文管理器 393
9.23 執行帶有局部副作用的代碼 395
9.24 解析並分析Python原始碼 398
9.25 將Python源碼分解為位元組碼 402
第10章 模組和包 406
10.1 把模組按階層組織成包 406
10.2 對所有符號的匯入進行精確控制 407
10.3 用相對名稱來匯入包中的子模組 408
10.4 將模組分解成多個檔案 410
10.5 讓各個目錄下的代碼在統一的命名空間下匯入 413
10.6 重新載入模組 415
10.7 讓目錄或zip檔案成為可啟動並執行指令碼 416
10.8 讀取包中的資料檔案 417
10.9 添加目錄到sys.path中 418
10.10 使用字串中給定的名稱來匯入模組 420
10.11 利用import鉤子從遠端機器上載入模組 421
10.12 在模組載入時為其打補丁 439
10.13 安裝只為自己所用的包 441
10.14 建立新的Python環境 442
10.15 發布自訂的包 444
第11章 網路和Web編程 446
11.1 以用戶端的形式同HTTP服務互動 446
11.2 建立一個TCP伺服器 450
11.3 建立一個UDP伺服器 454
11.4 從CIDR地址中產生IP地址的範圍 456
11.5 建立基於REST風格的簡單介面 458
11.6 利用XML-RPC實現簡單的遠端程序呼叫 463
11.7 在不同的解譯器間進行通訊 466
11.8 實現遠端程序呼叫 468
11.9 以簡單的方式驗證用戶端身份 472
11.10 為網路服務增加SSL支援 474
11.11 在進程間傳遞socket檔案描述符 481
11.12 理解事件驅動型I/O 486
11.13 發送和接收大型數組 493
第12章 並發 496
12.1 啟動和停止線程 496
12.2 判斷線程是否已經啟動 499
12.3 線程間通訊 503
12.4 對臨界區加鎖 508
12.5 避免死結 511
12.6 儲存線程專有狀態 515
12.7 建立線程池 517
12.8 實現簡單的並行編程 521
12.9 如何規避GIL帶來的限制 525
12.10 定義一個Actor任務 528
12.11 實現發行者/訂閱者訊息模式 532
12.12 使用產生器作為線程的替代方案 536
12.13 輪詢多個線程隊列 544
12.14 在UNIX上載入守護進程 547
第13章 實用指令碼和系統管理 552
13.1 通過重新導向、管道或輸入檔案來作為指令碼的輸入 552
13.2 終止程式並顯示錯誤資訊 553
13.3 解析命令列選項 554
13.4 在運行時提供密碼輸入提示 557
13.5 擷取終端大小 558
13.6 執行外部命令並擷取輸出 558
13.7 拷貝或移動檔案和目錄 560
13.8 建立和解包歸檔檔案 562
13.9 通過名稱來尋找檔案 563
13.10 讀取設定檔 565
13.11 給指令碼添加日誌記錄 568
13.12 給庫添加日誌記錄 571
13.13 建立一個秒錶計時器 573
13.14 給記憶體和CPU使用量設定限制 575
13.15 載入Web瀏覽器 576
第14章 測試、調試以及異常 578
14.1 測試發送到stdout上的輸出 578
14.2 在單元測試中為對象打補丁 579
14.3 在單元測試中檢測異常情況 583
14.4 將測試結果作為日誌記錄到檔案中 585
14.5 跳過測試,或者預計測試結果為失敗 586
14.6 處理多個異常 587
14.7 捕獲所有的異常 589
14.8 建立自訂的異常 591
14.9 通過引發異常來響應另一個異常 593
14.10 重新拋出上一個異常 595
14.11 發出警示資訊 596
14.12 對基本的程式崩潰問題進行調試 598
14.13 對程式做效能分析以及計時統計 600
14.14 讓你的程式運行得更快 603
第15章 C語言擴充 610
15.1 利用ctypes來訪問C代碼 612
15.2 編寫簡單的C語言擴充模組 618
15.3 編寫一個可運算元組的擴充函數 622
15.4 在C擴充模組中管理不透明指標 625
15.5 在擴充模組中定義並匯出C API 628
15.6 從C中調用Python 633
15.7 在C擴充模組中釋放GIL 639
15.8 混合使用C和Python環境中的線程 639
15.9 用Swig來封裝C代碼 640
15.10 用Cython來封裝C代碼 646
15.11 用Cython來高效運算元組 652
15.12 把函數指標轉換為可調用對象 657
15.13 把以NULL結尾的字串傳給C庫 659
15.14 把Unicode字串傳遞給C庫 663
15.15 把C字串轉換到Python中 667
15.16 同編碼方式不確定的C字串打交道 669
15.17 把檔案名稱傳給C擴充模組 672
15.18 把開啟的檔案傳給C擴充模組 673
15.19 在C中讀取檔案型對象 674
15.20 從C中訪問可迭代對象 677
15.21 排查段錯誤 678
附錄A 補充閱讀 680
:網盤下載
Python Cookbook(第3版)中文版pdf