第1章 過程型程序設(shè)計快速入門 1
1.1 創(chuàng)建并運行Python程序 1
1.2 Python的關(guān)鍵要素 5
1.2.1 要素#1:數(shù)據(jù)類型 6
1.2.2 要素#2:對象引用 7
1.2.3 要素#3:組合數(shù)據(jù)類型 9
1.2.4 元素#4:邏輯操作符 12
1.2.5 要素#5:控制流語句 16
1.2.6 要素#6:算術(shù)操作符 20
1.2.7 要素#7:輸入/輸出 23
1.2.8 要素#8:函數(shù)的創(chuàng)建與調(diào)用 25
1.3 實例 27
1.3.1 bigdigits.py 28
1.3.2 generate_grid.py 30
1.4 總結(jié) 33
1.5 練習(xí) 35
第2章 數(shù)據(jù)類型 38
2.1 標(biāo)識符與關(guān)鍵字 38
2.2 Integral類型 41
2.2.1 整數(shù) 41
2.2.2 布爾型 44
2.3 浮點類型 44
2.3.1 浮點數(shù) 45
2.3.2 復(fù)數(shù) 48
2.3.3 十進(jìn)制數(shù)字 49
2.4 字符串 50
2.4.1 比較字符串 53
2.4.2 字符串分片與步距 54
2.4.3 字符串操作符與方法 56
2.4.4 使用str.format()方法進(jìn)行字符串格式化 62
2.4.5 字符編碼 73
2.5 實例 75
2.5.1 quadratic.py 75
2.5.2 csv2html.py 78
2.6 總結(jié) 82
2.7 練習(xí) 84
第3章 組合數(shù)據(jù)類型 86
3.1 序列類型 86
3.1.1 元組 87
3.1.2 命名的元組 89
3.1.3 列表 91
3.1.4 列表內(nèi)涵 96
3.2 集合類型 98
3.2.1 集合 98
3.2.2 集合內(nèi)涵 102
3.2.3 固定集合 102
3.3 映射類型 103
3.3.1 字典 103
3.3.2 字典內(nèi)涵 110
3.3.3 默認(rèn)字典 111
3.4 組合數(shù)據(jù)類型的迭代與復(fù)制 113
3.4.1 迭代子、迭代操作與函數(shù) 113
3.4.2 組合類型的復(fù)制 121
3.5 實例 123
3.5.1 generate_usernames.py 123
3.5.2 statistics.py 126
3.6 總結(jié) 130
3.7 練習(xí) 131
第4章 控制結(jié)構(gòu)與函數(shù) 133
4.1 控制結(jié)構(gòu) 133
4.1.1 條件分支 133
4.1.2 循環(huán) 135
4.2 異常處理 136
4.2.1 捕獲與產(chǎn)生異常 136
4.2.2 自定義異常 141
4.3 自定義函數(shù) 144
4.3.1 名稱與Docstrings 148
4.3.2 參數(shù)與參數(shù)拆分 149
4.3.3 存取全局范圍的變量 152
4.3.4 Lambda函數(shù) 153
4.3.5 斷言 155
4.4 實例:make_html_skeleton.py 156
4.5 總結(jié) 162
4.6 練習(xí) 162
第5章 模塊 165
5.1 模塊與包 165
5.1.1 包 169
5.1.2 自定義模塊 171
5.2 Python標(biāo)準(zhǔn)庫概覽 181
5.2.1 字符串處理 181
5.2.2 io.StringIO類 182
5.2.3 命令行程序設(shè)計 183
5.2.4 數(shù)學(xué)與數(shù)字 184
5.2.5 時間與日期 184
5.2.6 實例:calendar、datetime與time模塊 185
5.2.7 算法與組合數(shù)據(jù)類型 185
5.2.8 文件格式、編碼與數(shù)據(jù)持久性 187
5.2.9 文件、目錄與進(jìn)程處理 190
5.2.10 網(wǎng)絡(luò)與Internet程序設(shè)計 192
5.2.11 XML 193
5.2.12 其他模塊 195
5.3 總結(jié) 196
5.4 練習(xí) 198
第6章 面向?qū)ο蟪绦蛟O(shè)計 200
6.1 面向?qū)ο蠓椒?span> 200
6.2 自定義類 204
6.2.1 屬性與方法 205
6.2.2 繼承與多態(tài) 209
6.2.3 使用特性進(jìn)行屬性存取控制 211
6.2.4 創(chuàng)建完全整合的數(shù)據(jù)類型 213
6.3 自定義組合類 225
6.3.1 創(chuàng)建聚集組合數(shù)據(jù)的類 225
6.3.2 使用聚集創(chuàng)建組合類 231
6.3.3 使用繼承創(chuàng)建組合類 237
6.4 總結(jié) 244
6.5 練習(xí) 245
第7章文件處理 247
7.1 二進(jìn)制數(shù)據(jù)的讀寫 251
7.1.1 帶可選壓縮的Pickle 252
7.1.2 帶可選壓縮的原始二進(jìn)制數(shù)據(jù) 256
7.2 文本文件的寫入與分析 263
7.2.1 寫入文本 263
7.2.2 分析文本 265
7.2.3 使用正則表達(dá)式分析文本 268
7.3 寫入與分析XML文件 270
7.3.1 元素樹 270
7.3.2 DOM 274
7.3.3 手動寫入XML 277
7.3.4 使用SAX分析XML 278
7.4 隨機存取二進(jìn)制文件 281
7.4.1 通用的BinaryRecordFile類 281
7.4.2 實例:BikeStock模塊的類 289
7.5 總結(jié) 292
7.6 練習(xí) 293
第8章 高級程序設(shè)計技術(shù) 295
8.1 過程型程序設(shè)計進(jìn)階 296
8.1.1 使用字典進(jìn)行分支 296
8.1.2 生成器表達(dá)式與函數(shù) 297
8.1.3 動態(tài)代碼執(zhí)行與動態(tài)導(dǎo)入 300
8.1.4 局部函數(shù)與遞歸函數(shù) 306
8.1.5 函數(shù)與方法修飾器 311
8.1.6 函數(shù)注釋 314
8.2 面向?qū)ο蟪绦蛟O(shè)計進(jìn)階 317
8.2.1 控制屬性存取 317
8.2.2 函子 320
8.2.3 上下文管理器 322
8.2.4 描述符 325
8.2.5 類修飾器 330
8.2.6 抽象基類 333
8.2.7 多繼承 340
8.2.8 元類 342
8.3 函數(shù)型程序設(shè)計 346
8.3.1 偏函數(shù) 348
8.3.2 協(xié)程 349
8.4 實例:Valid.py 356
8.5 總結(jié) 359
8.6 練習(xí) 360
第9章 調(diào)試、測試與Profiling 361
9.1 調(diào)試 361
9.1.1 處理語法錯誤 362
9.1.2 處理運行時錯誤 363
9.1.3 科學(xué)的調(diào)試 367
9.2 單元測試 371
9.3 Profiling 377
9.4 小結(jié) 382
第10章 進(jìn)程與線程 383
10.1 使用多進(jìn)程模塊 384
10.2 將工作分布到多個線程 388
10.2.1 實例:線程化的單詞尋找程序 389
10.2.2 實例:一個線程化的重復(fù)文件發(fā)現(xiàn)程序 392
10.3 總結(jié) 396
10.4 練習(xí) 397
第11章 網(wǎng)絡(luò) 399
11.1 創(chuàng)建TCP客戶端 400
11.2 創(chuàng)建TCP服務(wù)器 406
11.3 總結(jié) 412
11.4 練習(xí) 412
第12章 數(shù)據(jù)庫程序設(shè)計 414
12.1 DBM數(shù)據(jù)庫 414
12.2 SQL數(shù)據(jù)庫 418
12.3 總結(jié) 425
12.4 練習(xí) 425
第13章 正則表達(dá)式 427
13.1 Python的正則表達(dá)式語言 428
13.1.1 字符與字符類 428
13.1.2 量詞 429
13.1.3 組與捕獲 431
13.1.4 斷言與標(biāo)記 433
13.2 正則表達(dá)式模塊 436
13.3 總結(jié) 444
13.4 練習(xí) 445
第14章 分析簡介 446
14.1 BNF語法與分析的術(shù)語 447
14.2 手動編寫分析器 451
14.2.1 簡單的鍵-值數(shù)據(jù)分析 451
14.2.2 播放列表數(shù)據(jù)分析 454
14.2.3 Blocks域特定語言的分析 456
14.3 使用PyParsing進(jìn)行更Python化的分析 464
14.3.1 PyParsing快速介紹 465
14.3.2 簡單的鍵-值數(shù)據(jù)分析 468
14.3.3 播放列表數(shù)據(jù)分析 470
14.3.4 分析塊域特定語言 471
14.3.5 分析一階邏輯 476
14.4 使用PLY進(jìn)行Lex/Yacc風(fēng)格的分析 481
14.4.1 簡單的鍵-值數(shù)據(jù)分析 483
14.4.2 播放列表數(shù)據(jù)分析 485
14.4.3 分析塊域特定語言 487
14.4.4 分析一階邏輯 489
14.5 小結(jié) 493
14.6 練習(xí) 494
第15章 GUI程序設(shè)計介紹 496
15.1 對話框風(fēng)格的程序 499
15.2 主窗口風(fēng)格的程序 504
15.2.1 創(chuàng)建一個主窗口 504
15.2.2 創(chuàng)建自定義對話框 514
15.3 總結(jié) 517
15.4 練習(xí) 518