第1章 Python語言概述和開發環境 1
1.1 Python簡介 2
1.1.1 Python簡史 2
1.1.2 Python的特點 3
1.2 Python程序運行機製 3
1.3 開發Python的準備 4
1.3.1 在Windows上安裝Python 5
1.3.2 在Linux上安裝Python 6
1.3.3 在Mac OS X上安裝Python 7
1.4 第一個Python程序 8
1.4.1 編輯Python源程序 8
1.4.2 使用IDLE運行Python程序 8
1.4.3 使用命令行工具運行Python程序 9
1.5 交互式解釋器 11
1.6 本章小結 12
本章練習 12
第2章 變量和簡單類型 13
2.1 單行注釋和多行注釋 14
2.2 變量 15
2.2.1 Python是弱類型語言 15
2.2.2 使用print函數輸齣變量 16
2.2.3 變量的命名規則 17
2.2.4 Python的關鍵字和內置函數 18
2.3 數值類型 19
2.3.1 整型 19
2.3.2 浮點型 21
2.3.3 復數 21
2.4 字符串入門 22
2.4.1 字符串和轉義字符 22
2.4.2 拼接字符串 23
2.4.3 repr和字符串 23
2.4.4 使用input和raw_input獲取用戶輸入 24
2.4.5 長字符串 25
2.4.6 原始字符串 26
2.4.7 字節串(bytes) 26
2.5 深入使用字符串 28
2.5.1 轉義字符 28
2.5.2 字符串格式化 29
2.5.3 序列相關方法 31
2.5.4 大小寫相關方法 32
2.5.5 刪除空白 33
2.5.6 查找、替換相關方法 34
2.5.7 分割、連接方法 35
2.6 運算符 36
2.6.1 賦值運算符 36
2.6.2 算術運算符 37
2.6.3 位運算符 39
2.6.4 擴展後的賦值運算符 42
2.6.5 索引運算符 42
2.6.6 比較運算符與bool類型 42
2.6.7 邏輯運算符 44
2.6.8 三目運算符 45
2.6.9 in運算符 46
2.6.10 運算符的結閤性和優先級 46
2.7 本章小結 47
本章練習 47
第3章 列錶、元組和字典 49
3.1 序列簡介 50
3.1.1 Python的序列 50
3.1.2 創建列錶和元組 50
3.2 列錶和元組的通用用法 51
3.2.1 通過索引使用元素 51
3.2.2 子序列 51
3.2.3 加法 52
3.2.4 乘法 52
3.2.5 in運算符 53
3.2.6 長度、最大值和最小值 53
3.2.7 序列封包和序列解包 54
3.3 使用列錶 55
3.3.1 創建列錶 55
3.3.2 增加列錶元素 56
3.3.3 刪除列錶元素 57
3.3.4 修改列錶元素 58
3.3.5 列錶的其他常用方法 59
3.4 使用字典 61
3.4.1 字典入門 61
3.4.2 創建字典 62
3.4.3 字典的基本用法 63
3.4.4 字典的常用方法 64
3.4.5 使用字典格式化字符串 67
3.5 本章小結 67
本章練習 67
第4章 流程控製 68
4.1 順序結構 69
4.2 if分支結構 69
4.2.1 不要忘記縮進 70
4.2.2 不要隨意縮進 72
4.2.3 不要遺忘冒號 73
4.2.4 if條件的類型 73
4.2.5 if分支的邏輯錯誤 74
4.2.6 if錶達式 75
4.2.7 pass語句 75
4.3 斷言 76
4.4 循環結構 76
4.4.1 while循環 77
4.4.2 使用while循環遍曆列錶和元組 78
4.4.3 for-in循環 79
4.4.4 使用for-in循環遍曆列錶和元組 79
4.4.5 使用for-in循環遍曆字典 80
4.4.6 循環使用else 81
4.4.7 嵌套循環 83
4.4.8 for錶達式 84
4.4.9 常用工具函數 86
4.5 控製循環結構 87
4.5.1 使用break結束循環 88
4.5.2 使用continue忽略本次循環的剩下語句 89
4.5.3 使用return結束方法 89
4.6 牛刀小試 90
4.6.1 數字轉人民幣讀法 90
4.6.2 繞圈圈 92
4.6.3 控製颱五子棋 93
4.6.4 控製颱超市係統 95
4.7 本章小結 98
本章練習 98
第5章 函數和lambda錶達式 101
5.1 函數入門 102
5.1.1 理解函數 102
5.1.2 定義和調用函數 103
5.1.3 為函數提供文檔 104
5.1.4 多個返迴值 104
5.1.5 遞歸函數 105
5.2 函數的參數 106
5.2.1 關鍵字(keyword)參數 106
5.2.2 參數默認值 107
5.2.3 參數收集(個數可變的參數) 109
5.2.4 逆嚮參數收集 110
5.2.5 函數的參數傳遞機製 112
5.2.6 變量作用域 115
5.3 局部函數 118
5.4 函數的高級內容 119
5.4.1 使用函數變量 119
5.4.2 使用函數作為函數形參 120
5.4.3 使用函數作為返迴值 121
5.5 局部函數與lambda錶達式 122
5.5.1 迴顧局部函數 122
5.5.2 使用lambda錶達式代替局部函數 123
5.6 本章小結 124
本章練習 124
第6章 類和對象 125
6.1 類和對象 126
6.1.1 定義類 126
6.1.2 對象的産生和使用 127
6.1.3 對象的産生和使用 128
6.1.4 實例方法和自動綁定self 129
6.2 方法 132
6.2.1 類也能調用實例方法 132
6.2.2 類方法與靜態方法 133
6.2.3 @函數裝飾器 134
6.2.4 再論類命名空間 136
6.3 成員變量 137
6.3.1 類變量和實例變量 137
6.3.2 使用property函數定義屬性 140
6.4 隱藏和封裝 142
6.5 類的繼承 144
6.5.1 繼承的語法 144
6.5.2 關於多繼承 145
6.5.3 重寫父類的方法 146
6.5.4 使用未綁定方法調用被重寫的方法 147
6.5.5 使用super函數調用父類的構造方法 147
6.6 Python的動態性 149
6.6.1 動態屬性與__slots__ 149
6.6.2 使用type()函數定義類 151
6.6.3 使用metaclass 152
6.7 多態 153
6.7.1 多態性 154
6.7.2 檢查類型 155
6.8 枚舉類 156
6.8.1 枚舉入門 157
6.8.2 枚舉的構造器 158
6.9 本章小結 159
本章練習 159
第7章 異常處理 160
7.1 異常概述 161
7.2 異常處理機製 162
7.2.1 使用try...except捕獲異常 162
7.2.2 異常類的繼承體係 163
7.2.3 多異常捕獲 166
7.2.4 訪問異常信息 166
7.2.5 else塊 167
7.2.6 使用finally迴收資源 169
7.2.7 異常處理嵌套 171
7.3 使用raise引發異常 171
7.3.1 引發異常 171
7.3.2 自定義異常類 173
7.3.3 except和raise同時使用 173
7.3.4 raise不需要參數 174
7.4 Python的異常傳播軌跡 175
7.5 異常處理規則 177
7.5.1 不要過度使用異常 177
7.5.2 不要使用過於龐大的try塊 178
7.5.3 不要忽略捕獲到的異常 179
7.6 本章小結 179
本章練習 179
第8章 Python類的特殊方法 180
8.1 常見的特殊方法 181
8.1.1 重寫__repr__方法 181
8.1.2 析構方法:__del__ 182
8.1.3 __dir__方法 183
8.1.4 __dict__屬性 184
8.1.5 __getattr__、__setattr__等 184
8.2 與反射有關的屬性和方法 186
8.2.1 動態操作屬性 187
8.2.2 __call__屬性 188
8.3 與序列有關的特殊方法 189
8.3.1 與序列相關的方法 189
8.3.2 實現迭代器 191
8.3.3 擴展列錶、元組和字典 192
8.4 生成器 193
8.4.1 創建生成器 193
8.4.2 生成器的方法 195
8.5 運算符重載的特殊方法 197
8.5.1 與數值運算符相關的特殊方法 197
8.5.2 與比較運算符相關的特殊方法 201
8.5.3 與單目運算符相關的特殊方法 202
8.5.4 與類型轉換相關的特殊方法 203
8.5.5 與常見的內建函數相關的特殊方法 204
8.6 本章小結 205
本章練習 205
第9章 模塊和包 206
9.1 模塊化編程 207
9.1.1 導入模塊的語法 207
9.1.2 定義模塊 210
9.1.3 為模塊編寫說明文檔 211
9.1.4 為模塊編寫測試代碼 211
9.2 加載模塊 212
9.2.1 使用環境變量 212
9.2.2 默認的模塊加載路徑 215
9.2.3 導入模塊的本質 217
9.2.4 模塊的__all__變量 218
9.3 使用包 219
9.3.1 什麼是包 219
9.3.2 定義包 220
9.3.3 導入包內成員 222
9.4 查看模塊內容 224
9.4.1 模塊包含什麼 224
9.4.2 使用__doc__屬性查看文檔 225
9.4.3 使用__file__屬性查看模塊的源文件路徑 226
9.5 本章小結 226
本章練習 226
第10章 常見模塊 227
10.1 sys 228
10.1.1 獲取運行參數 230
10.1.2 動態修改模塊加載路徑 231
10.2 os模塊 231
10.3 random 234
10.4 time 235
10.5 JSON支持 238
10.5.1 JSON的基本知識 238
10.5.2 Python的JSON支持 241
10.6 正則錶達式 244
10.6.1 Python的正則錶達式支持 245
10.6.2 正則錶達式旗標 250
10.6.3 創建正則錶達式 251
10.6.4 子錶達式 253
10.6.5 貪婪模式與勉強模式 255
10.7 容器相關類 256
10.7.1 set和frozenset 257
10.7.2 雙端隊列(deque) 259
10.7.3 Python的堆操作 262
10.8 collections下的容器支持 265
10.8.1 ChainMap對象 265
10.8.2 Counter對象 267
10.8.3 defaultdict對象 269
10.8.4 namedtuple工廠函數 270
10.8.5 OrderedDict對象 272
10.9 函數相關模塊 273
10.9.1 itertools模塊的功能函數 273
10.9.2 functools模塊的功能函數 276
10.10 本章小結 283
本章練習 283
第11章 圖形界麵編程 285
11.1 Python的GUI庫 286
11.2 Tkinter GUI編程的組件 287
11.3 布局管理器 293
11.3.1 Pack布局管理器 293
11.3.2 Grid布局管理器 296
11.3.3 Place布局管理器 297
11.4 事件處理 299
11.4.1 簡單的事件處理 299
11.4.2 事件綁定 300
11.5 Tkinter常用組件 304
11.5.1 使用ttk組件 304
11.5.2 Variable類 305
11.5.3 使用compound選項 306
11.5.4 Entry和Text組件 308
11.5.5 Radiobutton和Checkbutton組件 311
11.5.6 Listbox和Combobox組件 315
11.5.7 Spinbox組件 319
11.5.8 Scale和LabeledScale組件 320
11.5.9 Labelframe組件 324
11.5.10 Panedwindow組件 326
11.5.11 OptionMenu組件 328
11.6 對話框(Dialog) 330
11.6.1 普通對話框 330
11.6.2 自定義模式、非模式對話框 332
11.6.3 輸入對話框 334
11.6.4 文件對話框 336
11.6.5 顔色選擇對話框 338
11.6.6 消息框 339
11.7 菜單 342
11.7.1 窗口菜單 343
11.7.2 右鍵菜單 347
11.8 在Canvas中繪圖 349
11.8.1 Tkinter Canvas的繪製功能 349
11.8.2 操作圖形項的標簽 356
11.8.3 操作圖形項 358
11.8.4 為圖形項綁定事件 363
11.8.5 繪製動畫 368
11.9 本章小結 371
本章練習 371
第12章 文件I/O 372
12.1 使用pathlib模塊操作目錄 373
12.1.1 PurePath的基本功能 374
12.1.2 PurePath的屬性和方法 376
12.1.3 Path的功能和用法 378
12.2 使用os.path操作目錄 379
12.3 使用fnmatch處理文件名匹配 380
12.4 打開文件 381
12.4.1 文件打開模式 382
12.4.2 緩衝 383
12.5 讀取文件 383
12.5.1 按字節或字符讀取 383
12.5.2 按行讀取 385
12.5.3 使用fileinput讀取多個輸入流 386
12.5.4 文件迭代器 386
12.5.5 管道輸入 387
12.5.6 使用with語句 388
12.5.7 使用linecache隨機讀取指定行 390
12.6 寫文件 391
12.6.1 文件指針的概念 391
12.6.2 寫文件 392
12.7 os模塊的文件和目錄函數 393
12.7.1 與目錄相關的函數 393
12.7.2 與權限相關的函數 395
12.7.3 與文件訪問相關的函數 396
12.8 使用tempfile模塊生成臨時文件和
臨時目錄 398
12.9 本章小結 399
本章練習 400
第13章 數據庫編程 401
13.1 Python數據庫API簡介 402
13.1.1 全局變量 402
13.1.2 數據庫API的核心類 403
13.1.3 操作數據庫的基本流程 404
13.2 操作SQLite數據庫 404
13.2.1 創建數據錶 405
13.2.2 使用SQLite Expert工具 406
13.2.3 使用序列重復執行DML語句 408
13.2.4 執行查詢 410
13.2.5 事務控製 412
13.2.6 執行SQL腳本 412
13.2.7 創建自定義函數 413
13.2.8 創建聚集函數 414
13.2.9 創建比較函數 415
13.3 操作MySQL數據庫 417
13.3.1 下載和安裝MySQL數據庫 417
13.3.2 使用pip工具管理模塊 420
13.3.3 執行DDL語句 421
13.3.4 執行DML語句 423
13.3.5 執行查詢語句 425
13.3.6 調用存儲過程 426
13.4 本章小結 427
本章練習 427
第14章 並發編程 428
14.1 綫程概述 429
14.1.1 綫程和進程 429
14.1.2 多綫程的優勢 430
14.2 綫程的創建和啓動 431
14.2.1 調用Thread類的構造器創建綫程 431
14.2.2 繼承Thread類創建綫程類 433
14.3 綫程的生命周期 434
14.3.1 新建和就緒狀態 434
14.3.2 運行和阻塞狀態 435
14.3.3 綫程死亡 436
14.4 控製綫程 438
14.4.1 join綫程 438
14.4.2 後颱綫程 439
14.4.3 綫程睡眠:sleep 440
14.5 綫程同步 440
14.5.1 綫程安全問題 440
14.5.2 同步鎖(Lock) 442
14.5.3 死鎖 445
14.6 綫程通信 447
14.6.1 使用Condition實現綫程通信 447
14.6.2 使用隊列(Queue)控製綫程通信 450
14.6.3 使用Event控製綫程通信 452
14.7 綫程池 454
14.7.1 綫程池 454
14.7.2 獲取執行結果 457
14.8 綫程相關類 458
14.8.1 綫程局部變量 458
14.8.2 定時器 460
14.8.3 任務調度 460
14.9 多進程 462
14.9.1 使用fork創建新進程 462
14.9.2 使用multiprocessing.Process創建新進程 463
14.9.3 Context和啓動進程的方式 465
14.9.4 使用進程池管理進程 466
14.9.5 進程通信 468
14.10 本章小結 470
本章練習 470
第15章 網絡編程 471
15.1 網絡編程的基礎知識 472
15.1.1 網絡基礎知識 472
15.1.2 IP地址和端口號 473
15.2 Python的基本網絡支持 474
15.2.1 Python的網絡模塊概述 474
15.2.2 使用urllib.parse子模塊 475
15.2.3 使用urllib.request讀取資源 479
15.2.4 管理cookie 483
15.3 基於TCP協議的網絡編程 486
15.3.1 TCP協議基礎 487
15.3.2 使用socket創建TCP服務器端 487
15.3.3 使用socket通信 489
15.3.4 加入多綫程 490
15.3.5 記錄用戶信息 492
15.3.6 半關閉的socket 497
15.3.7 selectors模塊 498
15.4 基於UDP協議的網絡編程 500
15.4.1 UDP協議基礎 500
15.4.2 使用socket發送和接收數據 501
15.4.3 使用UDP協議實現多點廣播 503
15.5 電子郵件支持 505
15.5.1 使用smtplib模塊發送郵件 505
15.5.2 使用poplib模塊收取郵件 508
15.6 本章小結 511
本章練習 512
第16章 文檔和測試 513
16.1 使用pydoc生成文檔 514
16.1.1 在控製颱中查看文檔 515
16.1.2 生成HTML文檔 516
16.1.3 啓動本地服務器來查看文檔信息 517
16.1.4 查找模塊 519
16.2 軟件測試概述 519
16.2.1 軟件測試的概念和目的 519
16.2.2 軟件測試的分類 521
16.2.3 開發活動和測試活動 521
16.2.4 常見的Bug管理工具 522
16.3 文檔測試 523
16.4 單元測試 525
16.4.1 單元測試概述 525
16.4.2 單元測試的邏輯覆蓋 527
16.5 使用PyUnit(unittest) 529
16.5.1 PyUnit(unittest)的用法 530
16.5.2 運行測試 533
16.5.3 使用測試包 534
16.5.4 測試固件之setUp和tearDown 536
16.5.5 跳過測試用例 538
16.6 本章小結 540
本章練習 540
第17章 打包和發布 541
17.1 使用zipapp模塊 542
17.1.1 生成可執行的Python檔案包 542
17.1.2 創建獨立應用 543
17.2 使用PyInstaller生成可執行程序 544
17.2.1 安裝PyInstaller 544
17.2.2 使用PyInstaller生成可執行程序 545
17.3 本章小結 547
本章練習 547
第18章 閤金彈頭 548
18.1 閤金彈頭遊戲簡介 549
18.2 pygame簡介 550
18.2.1 安裝pygame 550
18.2.2 pygame常用的遊戲API 551
18.3 開發遊戲界麵組件 553
18.3.1 遊戲界麵分析 553
18.3.2 實現“怪物”類 554
18.3.3 實現怪物管理 559
18.3.4 實現“子彈”類 560
18.3.5 加載、管理遊戲圖片 563
18.3.6 讓遊戲“運行”起來 565
18.4 增加“角色” 566
18.4.1 開發“角色”類 566
18.4.2 添加角色 572
18.5 閤理繪製地圖 575
18.6 增加音效 577
18.7 增加遊戲場景 579
18.8 本章小結 583
本章練習 583
第19章 數據可視化 584
19.1 使用Matplotlib生成數據圖 585
19.1.1 安裝Matplotlib包 585
19.1.2 Matplotlib數據圖入門 586
19.1.3 管理圖例 588
19.1.4 管理坐標軸 591
19.1.5 管理多個子圖 593
19.2 功能豐富的數據圖 597
19.2.1 餅圖 597
19.2.2 柱狀圖 598
19.2.3 水平柱狀圖 601
19.2.4 散點圖 602
19.2.5 等高綫圖 604
19.2.6 3D圖形 605
19.3 使用Pygal生成數據圖 606
19.3.1 安裝Pygal包 606
19.3.2 Pygal數據圖入門 607
19.3.3 配置Pygal數據圖 608
19.4 Pygal支持的常見數據圖 609
19.4.1 摺綫圖 610
19.4.2 水平柱狀圖和水平摺綫圖 611
19.4.3 疊加柱狀圖和疊加摺綫圖 612
19.4.4 餅圖 613
19.4.5 點圖 614
19.4.6 儀錶(Gauge)圖 615
19.4.7 雷達圖 616
19.5 處理數據 617
19.5.1 CSV文件格式 617
19.5.2 JSON數據 621
19.5.3 數據清洗 624
19.5.4 讀取網絡數據 626
19.6 本章小結 629
本章練習 629
第20章 網絡爬蟲 630
20.1 安裝Scrapy 631
20.1.1 瞭解Scrapy 631
20.1.2 安裝Scrapy 632
20.2 使用爬蟲爬取、分析招聘信息 634
20.2.1 創建Scrapy項目 634
20.2.2 使用shell調試工具 635
20.2.3 Scrapy開發步驟 638
20.2.4 使用JSON導齣信息 643
20.2.5 將數據寫入數據庫 644
20.2.6 使用Pygal展示招聘信息 645
20.3 處理反爬蟲 646
20.3.1 使用shell調試工具分析目標站點 646
20.3.2 使用Scrapy爬取高清圖片 649
20.3.3 應對反爬蟲的常見方法 651
20.3.4 整閤Selenium模擬瀏覽器行為 653
20.4 本章小結 657
本章練習 657
· · · · · · (
收起)