Python Cookbook目錄

第1章 數(shù)據(jù)結(jié)構(gòu)和算法 1

1.1 將序列分解為單獨(dú)的變量 1

1.2 從任意長(zhǎng)度的可迭代對(duì)象中分解元素 3

1.3 保存最后N個(gè)元素 5

1.4 找到最大或最小的N個(gè)元素 7

1.5 實(shí)現(xiàn)優(yōu)先級(jí)隊(duì)列 9

1.6 在字典中將鍵映射到多個(gè)值上 11

1.7 讓字典保持有序 13

1.8 與字典有關(guān)的計(jì)算問題 14

1.9 在兩個(gè)字典中尋找相同點(diǎn) 15

1.10 從序列中移除重復(fù)項(xiàng)且保持元素間順序不變 17

1.11 對(duì)切片命名 18

1.12 找出序列中出現(xiàn)次數(shù)最多的元素 20

1.13 通過(guò)公共鍵對(duì)字典列表排序 22

1.14 對(duì)不原生支持比較操作的對(duì)象排序 23

1.15 根據(jù)字段將記錄分組 25

1.16 篩選序列中的元素 26

1.17 從字典中提取子集 29

1.18 將名稱映射到序列的元素中 30

1.19 同時(shí)對(duì)數(shù)據(jù)做轉(zhuǎn)換和換算 33

1.20 將多個(gè)映射合并為單個(gè)映射 34

第2章 字符串和文本 37

2.1 針對(duì)任意多的分隔符拆分字符串 37

2.2 在字符串的開頭或結(jié)尾處做文本匹配 38

2.3 利用Shell通配符做字符串匹配 40

2.4 文本模式的匹配和查找 42

2.5 查找和替換文本 45

2.6 以不區(qū)分大小寫的方式對(duì)文本做查找和替換 47

2.7 定義實(shí)現(xiàn)最短匹配的正則表達(dá)式 48

2.8 編寫多行模式的正則表達(dá)式 49

2.9 將Unicode文本統(tǒng)一表示為規(guī)范形式 50

2.10 用正則表達(dá)式處理Unicode字符 52

2.11 從字符串中去掉不需要的字符 53

2.12 文本過(guò)濾和清理? 54

2.13 對(duì)齊文本字符串? 57

2.14 字符串連接及合并? 59

2.15 給字符串中的變量名做插值處理 62

2.16 以固定的列數(shù)重新格式化文本 64

2.17 在文本中處理HTML和XML實(shí)體 66

2.18 文本分詞? 67

2.19 編寫一個(gè)簡(jiǎn)單的遞歸下降解析器 70

2.20 在字節(jié)串上執(zhí)行文本操作 80

第3章數(shù)字墨吓、日期和時(shí)間 83

3.1 對(duì)數(shù)值進(jìn)行取整 83

3.2 執(zhí)行精確的小數(shù)計(jì)算 85

3.3 對(duì)數(shù)值做格式化輸出 87

3.4 同二進(jìn)制莺奸、八進(jìn)制和十六進(jìn)制數(shù)打交道 89

3.5 從字節(jié)串中打包和解包大整數(shù) 90

3.6 復(fù)數(shù)運(yùn)算 92

3.7 處理無(wú)窮大和NaN 94

3.8 分?jǐn)?shù)的計(jì)算 96

3.9 處理大型數(shù)組的計(jì)算 97

3.10 矩陣和線性代數(shù)的計(jì)算 101

3.11 隨機(jī)選擇 103

3.12 時(shí)間換算 105

3.13 計(jì)算上周5的日期 107

3.14 找出當(dāng)月的日期范圍 108

3.15 將字符串轉(zhuǎn)換為日期 110

3.16 處理涉及到時(shí)區(qū)的日期問題 112

第4章 迭代器和生成器 114

4.1 手動(dòng)訪問迭代器中的元素 114

4.2 委托迭代 115

4.3 用生成器創(chuàng)建新的迭代模式 116

4.4 實(shí)現(xiàn)迭代協(xié)議 118

4.5 反向迭代 121

4.6 定義帶有額外狀態(tài)的生成器函數(shù) 122

4.7 對(duì)迭代器做切片操作 123

4.8 跳過(guò)可迭代對(duì)象中的前一部分元素 124

4.9 迭代所有可能的組合或排列 127

4.10 以索引-值對(duì)的形式迭代序列 129

4.11 同時(shí)迭代多個(gè)序列 131

4.12 在不同的容器中進(jìn)行迭代 133

4.13 創(chuàng)建處理數(shù)據(jù)的管道 134

4.14 扁平化處理嵌套型的序列 137

4.15 合并多個(gè)有序序列,再對(duì)整個(gè)有序序列進(jìn)行迭代 139

4.16 用迭代器取代while循環(huán) 140

第5章 文件和I/O 142

5.1 讀寫文本數(shù)據(jù) 142

5.2 將輸出重定向到文件中 145

5.3 以不同的分隔符或行結(jié)尾符完成打印 145

5.4 讀寫二進(jìn)制數(shù)據(jù) 146

5.5 對(duì)已不存在的文件執(zhí)行寫入操作 149

5.6 在字符串上執(zhí)行I/O操作 150

5.7 讀寫壓縮的數(shù)據(jù)文件 151

5.8 對(duì)固定大小的記錄進(jìn)行迭代 152

5.9 將二進(jìn)制數(shù)據(jù)讀取到可變緩沖區(qū)中 153

5.10 對(duì)二進(jìn)制文件做內(nèi)存映射 155

5.11 處理路徑名 157

5.12 檢測(cè)文件是否存在 158

5.13 獲取目錄內(nèi)容的列表 159

5.14 繞過(guò)文件名編碼 161

5.15 打印無(wú)法解碼的文件名 162

5.16 為已經(jīng)打開的文件添加或修改編碼方式 164

5.17 將字節(jié)數(shù)據(jù)寫入文本文件 166

5.18 將已有的文件描述符包裝為文件對(duì)象 167

5.19 創(chuàng)建臨時(shí)文件和目錄 169

5.20 同串口進(jìn)行通信 171

5.21 序列化Python對(duì)象 172

第6章 數(shù)據(jù)編碼與處理 177

6.1 讀寫CSV數(shù)據(jù) 177

6.2 讀寫JSON數(shù)據(jù) 181

6.3 解析簡(jiǎn)單的XML文檔 186

6.4 以增量方式解析大型XML文件 188

6.5 將字典轉(zhuǎn)換為XML 192

6.6 解析灵迫、修改和重寫XML 194

6.7 用命名空間來(lái)解析XML文檔 196

6.8 同關(guān)系型數(shù)據(jù)庫(kù)進(jìn)行交互 198

6.9 編碼和解碼十六進(jìn)制數(shù)字 201

6.10 Base64編碼和解碼 202

6.11 讀寫二進(jìn)制結(jié)構(gòu)的數(shù)組 203

6.12讀取嵌套型和大小可變的二進(jìn)制結(jié)構(gòu) 207

6.13數(shù)據(jù)匯總和統(tǒng)計(jì) 218

第7章 函數(shù) 221

7.1 編寫可接受任意數(shù)量參數(shù)的函數(shù) 221

7.2 編寫只接受關(guān)鍵字參數(shù)的函數(shù) 223

7.3 將元數(shù)據(jù)信息附加到函數(shù)參數(shù)上 224

7.4 從函數(shù)中返回多個(gè)值 225

7.5 定義帶有默認(rèn)參數(shù)的函數(shù) 226

7.6 定義匿名或內(nèi)聯(lián)函數(shù) 229

7.7 在匿名函數(shù)中綁定變量的值 230

7.8 讓帶有N個(gè)參數(shù)的可調(diào)用對(duì)象以較少的參數(shù)形式調(diào)用 232

7.9 用函數(shù)替代只有單個(gè)方法的類 235

7.10 在回調(diào)函數(shù)中攜帶額外的狀態(tài) 236

7.11 內(nèi)聯(lián)回調(diào)函數(shù) 240

7.12 訪問定義在閉包內(nèi)的變量 242

第8章 類與對(duì)象 246

8.1 修改實(shí)例的字符串表示 246

8.2 自定義字符串的輸出格式 248

8.3 讓對(duì)象支持上下文管理協(xié)議 249

8.4 當(dāng)創(chuàng)建大量實(shí)例時(shí)如何節(jié)省內(nèi)存 251

8.5 將名稱封裝到類中 252

8.6 創(chuàng)建可管理的屬性 254

8.7 調(diào)用父類中的方法 259

8.8 在子類中擴(kuò)展屬性 263

8.9 創(chuàng)建一種新形式的類屬性或?qū)嵗龑傩?267

8.10 讓屬性具有惰性求值的能力 271

8.11 簡(jiǎn)化數(shù)據(jù)結(jié)構(gòu)的初始化過(guò)程 274

8.12 定義一個(gè)接口或抽象基類 278

8.13 實(shí)現(xiàn)一種數(shù)據(jù)模型或類型系統(tǒng) 281

8.14 實(shí)現(xiàn)自定義的容器 287

8.15 委托屬性的訪問 291

8.16 在類中定義多個(gè)構(gòu)造函數(shù) 296

8.17 不通過(guò)調(diào)用init來(lái)創(chuàng)建實(shí)例 298

8.18 用Mixin技術(shù)來(lái)擴(kuò)展類定義 299

8.19 實(shí)現(xiàn)帶有狀態(tài)的對(duì)象或狀態(tài)機(jī) 305

8.20 調(diào)用對(duì)象上的方法鹃锈,方法名以字符串形式給出 311

8.21 實(shí)現(xiàn)訪問者模式 312

8.22 實(shí)現(xiàn)非遞歸的訪問者模式 317

8.23 在環(huán)狀數(shù)據(jù)結(jié)構(gòu)中管理內(nèi)存? 324

8.24 讓類支持比較操作 327

8.25 創(chuàng)建緩存實(shí)例 330

第9章 元編程 335

9.1 給函數(shù)添加一個(gè)包裝 335

9.2 編寫裝飾器時(shí)如何保存函數(shù)的元數(shù)據(jù) 337

9.3 對(duì)裝飾器進(jìn)行解包裝 339

9.4 定義一個(gè)可接受參數(shù)的裝飾器 341

9.5 定義一個(gè)屬性可由用戶修改的裝飾器 342

9.6 定義一個(gè)能接收可選參數(shù)的裝飾器 346

9.7 利用裝飾器對(duì)函數(shù)參數(shù)強(qiáng)制執(zhí)行類型檢查 348

9.8 在類中定義裝飾器 352

9.9 把裝飾器定義成類 354

9.10 把裝飾器作用到類和靜態(tài)方法上 357

9.11 編寫裝飾器為被包裝的函數(shù)添加參數(shù) 359

9.12 利用裝飾器給類定義打補(bǔ)丁 362

9.13 利用元類來(lái)控制實(shí)例的創(chuàng)建 364

9.14 獲取類屬性的定義順序 367

9.15 定義一個(gè)能接受可選參數(shù)的元類 370

9.16 在*args和**kwargs上強(qiáng)制規(guī)定一種參數(shù)簽名 372

9.17 在類中強(qiáng)制規(guī)定編碼約定 375

9.18 通過(guò)編程的方式來(lái)定義類 378

9.19 在定義的時(shí)候初始化類成員 382

9.20 通過(guò)函數(shù)注解來(lái)實(shí)現(xiàn)方法重載 384

9.21 避免出現(xiàn)重復(fù)的屬性方法 391

9.22 以簡(jiǎn)單的方式定義上下文管理器 393

9.23 執(zhí)行帶有局部副作用的代碼 395

9.24 解析并分析Python源代碼 398

9.25 將Python源碼分解為字節(jié)碼 402

第10章 模塊和包 406

10.1 把模塊按層次結(jié)構(gòu)組織成包 406

10.2 對(duì)所有符號(hào)的導(dǎo)入進(jìn)行精確控制 407

10.3 用相對(duì)名稱來(lái)導(dǎo)入包中的子模塊 408

10.4 將模塊分解成多個(gè)文件 410

10.5 讓各個(gè)目錄下的代碼在統(tǒng)一的命名空間下導(dǎo)入 413

10.6 重新加載模塊 415

10.7 讓目錄或zip文件成為可運(yùn)打的腳本 416

10.8 讀取包中的數(shù)據(jù)文件 417

10.9 添加目錄到sys.path中 418

10.10 使用字符串中給定的名稱來(lái)導(dǎo)入模塊 420

10.11 利用import鉤子從遠(yuǎn)端機(jī)器上加載模塊 421

10.12 在模塊加載時(shí)為其打補(bǔ)丁 439

10.13 安裝只為自己所用的包 441

10.14 創(chuàng)建新的Python環(huán)境 442

10.15 發(fā)布自定義的包 444

第11章 網(wǎng)絡(luò)和Web編程 446

11.1 以客戶端的形式同HTTP服務(wù)交互 446

11.2 創(chuàng)建一個(gè)TCP服務(wù)器 450

11.3 創(chuàng)建一個(gè)UDP服務(wù)器 454

11.4 從CIDR地址中生成IP地址的范圍 456

11.5 創(chuàng)建基于REST風(fēng)格的簡(jiǎn)單接口 458

11.6 利用XML-RPC實(shí)現(xiàn)簡(jiǎn)單的遠(yuǎn)端過(guò)程調(diào)用 463

11.7 在不同的解釋器間進(jìn)行通信 466

11.8 實(shí)現(xiàn)遠(yuǎn)端過(guò)程調(diào)用 468

11.9 以簡(jiǎn)單的方式驗(yàn)證客戶端身份 472

11.10 為網(wǎng)絡(luò)服務(wù)增加SSL支持 474

11.11 在進(jìn)程間傳遞socket文件描述符 481

11.12 理解事件驅(qū)動(dòng)型I/O 486

11.13 發(fā)送和接收大型數(shù)組 493

第12章 并發(fā) 496

12.1 啟動(dòng)和停止線程 496

12.2 判斷線程是否已經(jīng)啟動(dòng) 499

12.3 線程間通信 503

12.4 對(duì)臨界區(qū)加鎖 508

12.5 避免死鎖 511

12.6 保存線程專有狀態(tài) 515

12.7 創(chuàng)建線程池 517

12.8 實(shí)現(xiàn)簡(jiǎn)單的并行編程 521

12.9 如何規(guī)避GIL帶來(lái)的限制 525

12.10? 定義一個(gè)Actor任務(wù) 528

12.11 實(shí)現(xiàn)發(fā)布者/訂閱者消息模式 532

12.12 使用生成器作為線程的替代方案 536

12.13 輪詢多個(gè)線程隊(duì)列 544

12.14 在UNIX上加載守護(hù)進(jìn)程 547

第13章 實(shí)用腳本和系統(tǒng)管理 552

13.1 通過(guò)重定向、管道或輸入文件來(lái)作為腳本的輸入 552

13.2 終止程序并顯示錯(cuò)誤信息 553

13.3 解析命令行選項(xiàng) 554

13.4 在運(yùn)行時(shí)提供密碼輸入提示 557

13.5 獲取終端大小 558

13.6 執(zhí)行外部命令并獲取輸出 558

13.7 拷貝或移動(dòng)文件和目錄 560

13.8 創(chuàng)建和解包歸檔文件 562

13.9 通過(guò)名稱來(lái)查找文件 563

13.10 讀取配置文件 565

13.11 給腳本添加日志記錄 568

13.12 給庫(kù)添加日志記錄 571

13.13 創(chuàng)建一個(gè)秒表計(jì)時(shí)器 573

13.14 給內(nèi)存和CPU使用量設(shè)定限制 575

13.15 加載Web瀏覽器 576

第14章 測(cè)試镰禾、調(diào)試以及異常 578

14.1 測(cè)試發(fā)送到stdout上的輸出 578

14.2 在單元測(cè)試中為對(duì)象打補(bǔ)丁 579

14.3 在單元測(cè)試中檢測(cè)異常情況 583

14.4 將測(cè)試結(jié)果作為日志記錄到文件中 585

14.5 跳過(guò)測(cè)試丹禀,或者預(yù)計(jì)測(cè)試結(jié)果為失敗 586

14.6 處理多個(gè)異常 587

14.7 捕獲所有的異常 589

14.8 創(chuàng)建自定義的異常 591

14.9 通過(guò)引發(fā)異常來(lái)響應(yīng)另一個(gè)異常 593

14.10 重新拋出上一個(gè)異常 595

14.11 發(fā)出告警信息 596

14.12 對(duì)基本的程序崩潰問題進(jìn)行調(diào)試 598

14.13 對(duì)程序做性能分析以及計(jì)時(shí)統(tǒng)計(jì) 600

14.14 讓你的程序運(yùn)行得更快 603

第15章 C語(yǔ)言擴(kuò)展 610

15.1 利用ctypes來(lái)訪問C代碼 612

15.2 編寫簡(jiǎn)單的C語(yǔ)言擴(kuò)展模塊 618

15.3 編寫一個(gè)可操作數(shù)組的擴(kuò)展函數(shù) 622

15.4 在C擴(kuò)展模塊中管理不透明指針 625

15.5 在擴(kuò)展模塊中定義并導(dǎo)出C API 628

15.6 從C中調(diào)用 Python 633

15.7 在C擴(kuò)展模塊中釋放GIL 639

15.8 混合使用C和Python環(huán)境中的線程 639

15.9 用Swig來(lái)包裝C代碼 640

15.10 用Cython來(lái)包裝C代碼 646

15.11 用Cython來(lái)高效操作數(shù)組 652

15.12 把函數(shù)指針轉(zhuǎn)換為可調(diào)用對(duì)象 657

15.13 把以NULL結(jié)尾的字符串傳給C庫(kù) 659

15.14 把Unicode字符串傳遞給C庫(kù) 663

15.15 把C字符串轉(zhuǎn)換到Python中 667

15.16 同編碼方式不確定的C字符串打交道 669

15.17 把文件名傳給C擴(kuò)展模塊 672

15.18 把打開的文件傳給C擴(kuò)展模塊 673

15.19 在C中讀取文件型對(duì)象 674

15.20 從C中訪問可迭代對(duì)象 677

15.21 排查段錯(cuò)誤 678

附錄A 補(bǔ)充閱讀 680

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市危融,隨后出現(xiàn)的幾起案子畏铆,更是在濱河造成了極大的恐慌,老刑警劉巖专挪,帶你破解...
    沈念sama閱讀 217,185評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件及志,死亡現(xiàn)場(chǎng)離奇詭異片排,居然都是意外死亡寨腔,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門率寡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)迫卢,“玉大人,你說(shuō)我怎么就攤上這事冶共∏颍” “怎么了每界?”我有些...
    開封第一講書人閱讀 163,524評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)家卖。 經(jīng)常有香客問我眨层,道長(zhǎng),這世上最難降的妖魔是什么上荡? 我笑而不...
    開封第一講書人閱讀 58,339評(píng)論 1 293
  • 正文 為了忘掉前任趴樱,我火速辦了婚禮,結(jié)果婚禮上酪捡,老公的妹妹穿的比我還像新娘叁征。我一直安慰自己,他們只是感情好逛薇,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,387評(píng)論 6 391
  • 文/花漫 我一把揭開白布捺疼。 她就那樣靜靜地躺著,像睡著了一般永罚。 火紅的嫁衣襯著肌膚如雪啤呼。 梳的紋絲不亂的頭發(fā)上曙咽,一...
    開封第一講書人閱讀 51,287評(píng)論 1 301
  • 那天于样,我揣著相機(jī)與錄音,去河邊找鬼撒轮。 笑死产捞,一個(gè)胖子當(dāng)著我的面吹牛醇锚,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播坯临,決...
    沈念sama閱讀 40,130評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼焊唬,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了看靠?” 一聲冷哼從身側(cè)響起赶促,我...
    開封第一講書人閱讀 38,985評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎挟炬,沒想到半個(gè)月后鸥滨,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,420評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡谤祖,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,617評(píng)論 3 334
  • 正文 我和宋清朗相戀三年婿滓,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片粥喜。...
    茶點(diǎn)故事閱讀 39,779評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡凸主,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出额湘,到底是詐尸還是另有隱情卿吐,我是刑警寧澤旁舰,帶...
    沈念sama閱讀 35,477評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站嗡官,受9級(jí)特大地震影響箭窜,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜衍腥,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,088評(píng)論 3 328
  • 文/蒙蒙 一绽快、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧紧阔,春花似錦坊罢、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至乖仇,卻和暖如春憾儒,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背乃沙。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工起趾, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人警儒。 一個(gè)月前我還...
    沈念sama閱讀 47,876評(píng)論 2 370
  • 正文 我出身青樓训裆,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親蜀铲。 傳聞我的和親對(duì)象是個(gè)殘疾皇子边琉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,700評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容