Python 從小白到大牛, 2/e

關東升

  • Python 從小白到大牛, 2/e-preview-1
  • Python 從小白到大牛, 2/e-preview-2
  • Python 從小白到大牛, 2/e-preview-3
Python 從小白到大牛, 2/e-preview-1

買這商品的人也買了...

相關主題

商品描述

本書是一部系統論述Python 編程語言、OOP 編程思想以及函數式編程思想的立體化教程(含圖書、教學課件、 源代碼與視頻教程)。全書共分為四篇:第一篇Python 語言基礎(第1 ~ 8 章),第二篇Python 編程進階(第9 ~17 章), 第三篇Python 常用庫與框架(第18 ~ 22 章),第四篇Python 項目實戰(第23 ~ 28 章)。主要內容包括:開篇綜述、開發 環境搭建、第一個Python 程序、Python 語法基礎、Python 編碼規範、數據類型、運算符、控制語句、數據結構(序列、 集合和字典)、函數與函數式編程、面向對象編程、異常處理、常用模塊、正則表達式、文件操作與管理、數據交換 格式、數據庫編程、網絡編程、wxPython 圖形用戶界面編程、Python 多線程編程、項目實戰1 :網絡爬蟲技術——爬 取搜狐證券股票數據、項目實戰2 :數據分析技術——貴州茅臺股票數據分析、項目實戰3 :數據可視化技術——貴 州茅臺股票數據可視化、項目實戰4 :電腦視覺技術——網站驗證碼識別、項目實戰5 :Python Web Flask 框架—— PetStore 寵物商店項目、項目實戰6:Python 綜合技術——QQ 聊天工具開發。 為便於讀者高效學習,快速掌握Python 編程方法,本書提供完整的教學課件、完整的源代碼與豐富的配套視頻教 程以及在線答疑服務等內容。 本書適合作為Python 程序設計者的參考用書。

作者簡介

關東昇一個在IT領域摸爬滾打20多年的老程序員、知名培訓專家、暢銷書作家。
精通多種IT技術。
參與設計和開發北京市公交一卡通大型項目,開發國家農產品追溯系統、金融系統微博等移動客戶端項目,並在App Store發布多款遊戲和應用軟件。
長期為中國移動、中國聯通、南方航空、中石油、工商銀行、平安銀行和天津港務局等企事業單位提供培訓服務。
先後出版了《iOS開髮指南》《從零開始學Swift》《Android網絡遊戲開發實戰》《Cocos2d-x實戰》《Java從小白到大牛》《Kotlin從小白到大牛》等40多部圖書。

目錄大綱

推薦序 .................................1
前言 .....................................3
知識圖譜 ..............................4

一篇Python 語言基礎

1 章開篇綜述 ................. 3
1.1 Python 語言歷史 .................4
1.2 Python 語言設計哲學——Python 之禪 .........................4
1.3 Python 語言特點 .................5
1.4 Python 語言應用前景 ..........6
1.5 如何獲得幫助 .....................7

2 章開發環境搭建 .......... 8
2.1 搭建Python 環境.................8
2.2 PyCharm 開發工具 ............ 10
2.2.1 下載和安裝 ............ 11
2.2.2 設置Python 解釋器 ........................................ 12
2.3 文本編輯工具 ................... 14
2.4 本章小結 .......................... 14
2.5 動手實踐 .......................... 14

3 章一個Python 程序 15
3.1 使用Python Shell .............. 15
3.2 使用PyCharm 實現 ........... 17
3.2.1 創建項目 ................ 17
3.2.2 創建Python 代碼文件 ..................................... 19
3.2.3 編寫代碼 ................ 20
3.2.4 運行程序 ................ 20
3.3 文本編輯工具+Python 解釋器實現 ............................ 21
3.3.1 編寫代碼 ................ 21
3.3.2 運行程序 ................ 21
3.4 代碼解釋 .......................... 22
3.5 本章小結 .......................... 23
3.6 動手實踐:世界,你好 ..... 23

4 章Python 語法基礎 ....24
4.1 標識符和關鍵字 ................ 24
4.1.1 標識符 ................... 24
4.1.2 關鍵字 ................... 24
4.2 變量和常量 ...................... 25
4.2.1 變量 ...................... 25
4.2.2 常量 ...................... 25
4.3 註釋 ................................. 25
4.4 語句 ................................. 26
4.5 模塊 ................................. 27
4.6 包 ..................................... 28
4.6.1 創建包 ................... 28
4.6.2 包導入 ................... 29
4.7 本章小結 .......................... 30
4.8 同步練習 .......................... 30

5 章Python 編碼規範 ....31
5.1 命名規範 .......................... 31
5.2 註釋規範 .......................... 32
5.2.1 文件註釋 ................ 32
5.2.2 文檔註釋 ................ 32
5.2.3 代碼註釋 ................ 34
5.2.4 使用TODO 註釋.... 35
5.3 導入規範 .......................... 36
5.4 代碼排版 .......................... 37
5.4.1 空行 ...................... 37
5.4.2 空格 ...................... 38
5.4.3 縮進 ...................... 39
5.4.4 斷行 ...................... 39
5.5 本章小結 .......................... 40
5.6 同步練習 .......................... 40

6 章數據類型 ................42
6.1 數字類型 .......................... 42
6.1.1 整數類型 ................ 42
6.1.2 浮點類型 ................ 43
6.1.3 複數類型 ................ 43
6.1.4 布爾類型 ................ 43
6.2 數字類型互相轉換 ............ 44
6.2.1 隱式類型轉換 ........ 44
6.2.2 顯式類型轉換 ........ 45
6.3 字符串類型 ...................... 45
6.3.1 字符串表示方式 ..... 45
6.3.2 字符串格式化 ........ 47
6.3.3 字符串查找 ............ 49
6.3.4 字符串與數字互相轉換................................... 50
6.4 本章小結 .......................... 51
6.5 同步練習 .......................... 52

7 章運算符 ...................53
7.1 算術運算符 ...................... 53
7.1.1 一元運算符 ............ 53
7.1.2 二元運算符 ............ 53
7.2 關係運算符 ...................... 55
7.3 邏輯運算符 ...................... 56
7.4 位運算符 .......................... 57
7.5 賦值運算符 ...................... 59
7.6 其他運算符 ...................... 61
7.6.1 同一性測試運算符 . 61
7.6.2 成員測試運算符 ..... 62
7.7 運算符優先級 ................... 62
7.8 本章小結 .......................... 63
7.9 同步練習 .......................... 63

8 章控制語句 ................64
8.1 分支語句 .......................... 64
8.1.1 if 結構 ................... 64
8.1.2 if-else 結構 ........... 65
8.1.3 elif 結構 ................ 66
8.1.4 三元運算符替代品——條件表達式 ................ 67
8.2 循環語句 .......................... 67
8.2.1 while 語句 .............. 67
8.2.2 for 語句 .................. 68
8.3 跳轉語句 .......................... 69
8.3.1 break 語句 .............. 69
8.3.2 continue 語句 ......... 70
8.3.3 while 和for 中的else 語句.............................. 70
8.4 使用範圍 .......................... 72
8.5 本章小結 .......................... 72
8.6 同步練習 .......................... 72
8.7 動手實踐:計算水仙花數 . 73

二篇Python 編程進階

9 章序列 .....................77
9.1 序列概述 .......................... 77
9.1.1 索引作 ............... 78
9.1.2 序列的加和乘 ........ 78
9.1.3 序列切片 ................ 79
9.2 元組 ................................. 80
9.2.1 創建元組 ................ 80
9.2.2 訪問元組 ................ 81
9.2.3 遍曆元組 ................ 82
9.3 列表 ................................. 82
9.3.1 列表創建 ................ 83
9.3.2 追加元素 ................ 83
9.3.3 插入元素 ................ 84
9.3.4 替換元素 ................ 84
9.3.5 刪除元素 ................ 84
9.3.6 其他常用方法 ........ 85
9.3.7 列表推導式 ............ 86
9.4 本章小結 .......................... 87
9.5 同步練習 .......................... 87
9.6 動手實踐:使用列表推導式 ....................................... 87

10 章集合 ...................88
10.1 可變集合 ........................ 88
10.1.1 創建可變集合 .... 88
10.1.2 修改可變集合 .... 89
10.1.3 遍歷集合 ............ 90
10.2 不可變集合 .................... 90
10.3 集合推導式 .................... 91
10.4 本章小結 ........................ 92
10.5 同步練習 ........................ 92
10.6 動手實踐:使用集合推導式 ..................................... 92

11 章字典 ....................93
11.1 創建字典 ........................ 93
11.1.1 使用大括號創建字典 .................................. 93
11.1.2 使用dict() 函數創建字典 ............................ 94
11.2 修改字典 ........................ 95
11.3 訪問字典 ........................ 96
11.4 遍歷字典 ........................ 96
11.5 字典推導式 ..................... 97
11.6 本章小結 ........................ 98
11.7 同步練習 ........................ 98
11.8 動手實踐:使用字典推導式 ..................................... 98

12 章函數與函數式編程 99
12.1 定義函數 ........................ 99
12.2 函數參數 ...................... 100
12.2.1 使用關鍵字參數調用函數 ......................... 100
12.2.2 參數默認值 ...... 100
12.2.3 單星號(*)可變參數 .............................. 101
12.2.4 雙星號(**)可變參數 ............................ 102
12.3 函數返回值 ................... 102
12.3.1 無返回值函數 .. 102
12.3.2 多返回值函數 .. 103
12.4 函數變量作用域 ............ 104
12.5 生成器 .......................... 105
12.6 嵌套函數 ...................... 107
12.7 函數式編程基礎 ............ 108
12.7.1 高階函數與函數類型 ................................ 108
12.7.2 函數作為其他函數返回值使用.................. 109
12.7.3 函數作為其他函數參數使用 ..................... 109
12.7.4 匿名函數與lambda 表達式 ....................... 110
12.8 函數式編程的三大基礎函數 ................................... 111
12.8.1 過濾函數filter() ........................................ 111
12.8.2 映函數map() 112
12.8.3 聚合函數reduce() ..................................... 112
12.9 裝飾器 .......................... 113
12.9.1 一個沒有使用裝飾器的示例 ..................... 113
12.9.2 使用裝飾器 ...... 114
12.9.3 同時使用多個裝飾器 ................................ 114
12.9.4 給裝飾器傳遞參數 .................................... 115
12.10 本章小結 .................... 116
12.11 同步練習 .................... 116
12.12 動手實踐:找出素數 ... 117

13 章面向對象編程 .....118
13.1 面向對象概述 ................ 118
13.2 面向對像三個基本特性 . 118
13.2.1 封裝性 ............. 118
13.2.2 繼承性 ............. 118
13.2.3 多態性 ............. 119
13.3 類和對象 ...................... 119
13.3.1 定義類 ............. 119
13.3.2 創建和使用對象 ........................................ 119
13.3.3 實例變量 .......... 120
13.3.4 類變量 ............. 121
13.3.5 構造方法 .......... 122
13.3.6 實例方法 .......... 123
13.3.7 類方法 ............. 124
13.3.8 靜態方法 .......... 124
13.4 封裝性 .......................... 125
13.4.1 私有變量 .......... 125
13.4.2 私有方法 .......... 126
13.4.3 定義屬性 .......... 127
13.5 繼承性 .......................... 128
13.5.1 繼承概念 .......... 128
13.5.2 重寫方法 .......... 129
13.5.3 多繼承 ............. 130
13.6 多態性 .......................... 131
13.6.1 多態概念 .......... 131
13.6.2 類型檢查 .......... 132
13.6.3 鴨子類型 .......... 133
13.7 Python 根類——object .. 134
13.7.1 __str__() 方法 . 134
13.7.2 對像比較方法 .. 135
13.8 本章小結 ...................... 136
13.9 同步練習 ...................... 136
13.10 動手實踐:設計多繼承騾子類 ............................. 136

14 章異常處理 ............137
14.1 一個異常示例 ................ 137
14.2 異常類繼承層次 ............ 138
14.3 常見異常 ...................... 139
14.3.1 AttributeError 異常 ................................... 139
14.3.2 OSError 異常 ... 140
14.3.3 IndeError 異常 ........................................ 140
14.3.4 KeyError 異常 .. 141
14.3.5 NameError 異常 ........................................ 141
14.3.6 TypeError 異常 . 141
14.3.7 ValueError 異常 ........................................ 142
14.4 捕獲異常 ...................... 142
14.4.1 try-ecept 語句 . 142
14.4.2 多個ecept 代碼塊 ................................... 143
14.4.3 try-ecept 語句嵌套 .................................. 145
14.4.4 多重異常捕獲 .. 146
14.5 異常堆棧跟踪 ................ 146
14.6 釋放資源 ...................... 147
14.6.1 finally 代碼塊 .. 148
14.6.2 else 代碼塊 ...... 149
14.6.3 with as 代碼塊自動資源管理 .................... 150
14.7 自定義異常類 ................ 151
14.8 顯式拋出異常 ................ 151
14.9 本章小結 ...................... 152
14.10 同步練習 .................... 152
14.11 動手實踐:釋放資源 ... 152

15 章常用模塊 ............153
15.1 math 模塊 ..................... 153
15.1.1 舍入函數 .......... 153
15.1.2 冪和對數函數 .. 154
15.1.3 三角函數 .......... 154
15.2 random 模塊 .................. 155
15.3 datetime 模塊 ................ 156
15.3.1 datetime、date 和time 類 ......................... 157
15.3.2 日期時間計算 .. 159
15.3.3 日期時間格式化和解析 ............................. 160
15.3.4 時區 ................. 162
15.4 本章小結 ...................... 163
15.5 同步練習 ...................... 163
15.6 動手實踐:輸入與轉換日期 ................................... 163

16 章正則表達式 ........164
16.1 正則表達式中的字符 ..... 164
16.1.1 元字符 ............. 164
16.1.2 字符轉義 .......... 165
16.1.3 開始與結束字符 ........................................ 165
16.2 字符類 .......................... 166
16.2.1 定義字符類 ...... 166
16.2.2 字符類取反 ...... 167
16.2.3 區間 ................. 167
16.2.4 預定義字符類 .. 168
16.3 量詞.............................. 169
16.3.1 使用量詞 .......... 169
16.3.2 貪婪量詞和懶惰量詞 ................................ 170
16.4 分組.............................. 171
16.4.1 定義分組 .......... 171
16.4.2 命名分組 .......... 172
16.4.3 反向引用分組 .. 172
16.4.4 非捕獲分組 ...... 174
16.5 re 模塊中重要函數 ........ 174
16.5.1 search() 和match() 函數 ........................... 174
16.5.2 findall() 和finditer() 函數 ......................... 176
16.5.3 字符串分割 ...... 176
16.5.4 字符串替換 ...... 177
16.6 編譯正則表達式 ............ 178
16.6.1 已編譯正則表達式對象 ............................. 178
16.6.2 編譯標誌 .......... 180
16.7 本章小結 ...................... 183
16.8 同步練習 ...................... 183
16.9 動手實踐:找出HTML 中的圖片 .......................... 183

17 章文件作與管理 ..184
17.1 文件作 ...................... 184
17.1.1 打開文件 .......... 184
17.1.2 關閉文件 .......... 186
17.1.3 文本文件讀寫 .. 187
17.1.4 二進製文件讀寫 ........................................ 187
17.2 os 模塊 ......................... 188
17.3 os.path 模塊 ................... 189
17.4 本章小結 ...................... 191
17.5 同步練習 ...................... 191
17.6 動手實踐:讀寫日期 ..... 191

三篇Python 常用庫與框架

18 章數據交換格式 .....195
18.1 XML 數據交換格式 ....... 196
18.1.1 XML 文檔結構 196
18.1.2 解析XML 文檔 197
18.1.3 使用XPath ....... 200
18.2 JSON 數據交換格式 ...... 201
18.2.1 JSON 文檔結構 201
18.2.2 JSON 數據編碼 203
18.2.3 JSON 數據解碼 204
18.3 本章小結 ...................... 206
18.4 同步練習 ...................... 206
18.5 動手實踐:解析結構化文檔 ................................... 206

19 章數據庫編程 ........207
19.1 數據持久化技術概述 ..... 207
19.2 MySQL 數據庫管理系統 ........................................ 207
19.2.1 數據庫安裝和配置 .................................... 208
19.2.2 登錄服務器 ...... 212
19.2.3 常見的管理命令 ........................................ 213
19.3 Python DB-API .............. 216
19.3.1 建立數據庫連接 ........................................ 217
19.3.2 創建游標 .......... 218
19.4 實例:User 表CRUD 作 ..................................... 218
19.4.1 安裝PyMySQL 庫 .................................... 218
19.4.2 數據庫編程一般過程 ................................ 219
19.4.3 數據查詢作 .. 220
19.4.4 數據修改作 .. 222
19.5 SQL 數據存儲 ........... 225
19.5.1 dbm 數據庫的打開和關閉 ......................... 225
19.5.2 dbm 數據存儲 .. 226
19.6 本章小結 ...................... 227
19.7 同步練習 ...................... 227
19.8 動手實踐:從結構化文檔遷移數據到數據庫 ......... 227

20 章網絡編程 ............228
20.1 網絡基礎 ...................... 228
20.1.1 網絡結構 .......... 228
20.1.2 TCP/IP ............. 229
20.1.3 IP 地址 ............. 229
20.1.4 端口 ................. 230
20.2 TCP Socket 低層次網絡編程 .................................. 230
20.2.1 TCP Socket 通信概述 ................................ 230
20.2.2 TCP Socket 通信過程 ................................ 230
20.2.3 TCP Socket 編程API ................................ 231
20.2.4 實例:簡單聊天工具 ................................ 232
20.2.5 實例:文件上傳工具 ................................ 233
20.3 UDP Socket 低層次網絡編程.................................. 235
20.3.1 UDP Socket 編程API ............................... 235
20.3.2 實例:簡單聊天工具 ................................ 236
20.3.3 實例:文本文件上傳工具 ......................... 237
20.4 訪問互聯網資源 ............ 238
20.4.1 URL 概念 ........ 238
20.4.2 HTTP/HTTPS .. 239
20.4.3 搭建自己的Web 服務器 ........................... 239
20.4.4 使用urllib 庫 ... 243
20.4.5 發送GET 請求 . 243
20.4.6 發送POST 請求 ........................................ 244
20.4.7 實例:圖片下載器 .................................... 245
20.5 本章小結 ...................... 245
20.6 同步練習 ...................... 245
20.7 動手實踐:解析來自Web 的結構化數據 ............... 246

21 章wPython 圖形用戶界面編程 ........................247
21.1 Python 圖形用戶界面開發工具包 ........................... 247
21.2 wPython 安裝 .............. 247
21.3 wPython 基礎 .............. 248
21.3.1 wPython 類層次結構 ............................... 248
21.3.2 一個wPython 程序 .............................. 248
21.3.3 wPython 界面構建層次結構 .................... 252
21.3.4 界面設計工具 .. 252
21.4 事件處理 ...................... 254
21.4.1 一對一事件處理 ........................................ 254
21.4.2 一對多事件處理 ........................................ 255
21.5 佈局管理 ...................... 257
21.5.1 不要使用對佈局 .................................... 257
21.5.2 Sizer 佈局管理器 ...................................... 257
21.5.3 Bo 佈局器 ...... 258
21.5.4 StaticBo 佈局 . 260
21.5.5 Grid 佈局 ......... 261
21.5.6 FleGrid 佈局 .. 263
21.6 wPython 基本控件 ....... 264
21.6.1 靜態文本和按鈕 ........................................ 265
21.6.2 文本輸入控件 .. 266
21.6.3 複選框 ............. 267
21.6.4 單選按鈕 .......... 268
21.6.5 下拉列表 .......... 269
21.6.6 列表 ................. 271
21.6.7 靜態圖片控件 .. 272
21.7 實例:圖書信息網格 ..... 274
21.8 本章小結 ...................... 276
21.9 同步練習 ...................... 276
21.10 動手實踐:展示Web 數據 ................................... 276

22 章Python 多線程編程 ......................................277
22.1 基礎知識 ...................... 277
22.1.1 進程 ................. 277
22.1.2 線程 ................. 278
22.2 使用threading 模塊 ....... 278
22.3 創建線程 ...................... 279
22.3.1 自定義函數作為線程體 ............................. 279
22.3.2 繼承Thread 線程類實現線程體 ................ 281
22.4 線程管理 ...................... 282
22.4.1 等待線程結束 .. 282
22.4.2 線程停止 .......... 283
22.5 線程安全 ...................... 284
22.5.1 臨界資源問題 .. 285
22.5.2 多線程同步 ...... 287
22.6 線程間通信 ................... 288
22.6.1 使用Condition 實現線程間通信 ............... 288
22.6.2 使用Event 實現線程間通信 ...................... 292
22.7 本章小結 ...................... 293
22.8 同步練習 ...................... 293
22.9 動手實踐:網絡爬蟲 ..... 293

23 章項目實戰1:網絡爬蟲技術——爬取搜狐證券股票數據................................. .....................297
23.1 網絡爬蟲技術概述 ........ 297
23.1.1 網絡通信技術 .. 297
23.1.2 多線程技術 ...... 297
23.1.3 數據交換技術 .. 298
23.1.4 Web 前端技術 .. 298
23.1.5 數據解析技術 .. 299
23.1.6 數據存儲技術 .. 300
23.2 爬取數據 ...................... 300
23.2.1 網頁中靜態和動態數據 ............................. 300
23.2.2 使用urllib 爬取數據 ................................. 301
23.2.3 使用Selenium 爬取數據 ........................... 304
23.3 解析數據 ...................... 307
23.3.1 使用正則表達式 ........................................ 307
23.3.2 使用BeautifulSoup 庫 .............................. 309
23.4 項目實戰:爬取搜狐網股票數據 ........................... 312
23.4.1 爬取並解析數據 ........................................ 312
23.4.2 檢測數據是否更新 .................................... 314
23.4.3 保存數據到數據庫 .................................... 315
23.4.4 爬蟲工作計劃任務 .................................... 318

24 章項目實戰2:數據分析技術——貴州茅台股票數據分析.................................. ....................321
24.1 數據分析過程 ................ 321
24.1.1 數據收集 .......... 321
24.1.2 數據存儲 .......... 321
24.1.3 數據清洗 .......... 322
24.1.4 數據分析 .......... 322
24.1.5 數據可視化 ...... 322
24.2 數據分析工具環境搭建和使用 ............................... 322
24.2.1 安裝Jupyter ..... 322
24.2.2 使用IPython Shell .................................... 323
24.2.3 使用Jupyter tebook .............................. 324
24.3 數據分析與科學計算基礎庫——NumPy ................ 327
24.3.1 NumPy 庫安裝 . 327
24.3.2 NumPy 中的多維數組對象 ........................ 327
24.3.3 NumPy 數組的數據類型 ........................... 328
24.3.4 數組的屬性 ...... 328
24.3.5 數組的軸 .......... 329
24.3.6 訪問一維數組中的元素 ............................. 330
24.3.7 訪問二維數組中的元素 ............................. 330
24.4 數據分析庫——pandas ................................... 331
24.4.1 pandas 庫安裝 .. 332
24.4.2 Series 數據結構 ........................................ 332
24.4.3 DataFrame 數據結構 ................................. 333
24.5 項目​​實戰:貴州茅台股票數據分析 ........................ 335
24.5.1 從數據庫中讀取股票歷史數據.................. 335
24.5.2 獲得特定時間段股票交易數據.................. 336
24.5.3 查詢時間段內大成交量 ......................... 337
24.5.4 查詢時間段內總成交量 ............................. 337
24.5.5 按照成交金額排序 .................................... 338

25 章項目實戰3:數據可視化技術——貴州茅台股票數據可視化.................................. .............339
25.1 使用Matplotlib 繪製圖表 ....................................... 339
25.1.1 安裝Matplotlib 339
25.1.2 圖表基本構成要素 .................................... 339
25.1.3 繪製折線圖 ...... 340
25.1.4 繪製柱狀圖 ...... 341
25.1.5 繪製餅狀圖 ...... 342
25.1.6 繪製散點圖 ...... 343
25.1.7 繪製子圖表 ...... 344
25.2 項目實戰:貴州茅台股票數據可視化 .................... 346
25.2.1 從數據庫讀取股票數據 ............................. 346
25.2.2 繪製股票成交量折線圖 ............................. 347
25.2.3 繪製股票OHLC 圖 ................................... 348
25.2.4 繪製股票K 線圖 ....................................... 349
26 章項目實戰4:計算機視覺技術——網站驗證碼識別................................... .........................352
26.1 人工智能 ...................... 352
26.2 計算機視覺 ................... 352
26.2.1 計算機視覺的Python 語言相關庫 ............ 353
26.2.2 色彩空間 .......... 353
26.3 使用OpenCV 庫 ............ 353
26.3.1 安裝OpenCV 庫 ....................................... 353
26.3.2 讀取和顯示圖像 ........................................ 353
26.3.3 調整圖像大小 .. 354
26.3.4 圖像旋轉 .......... 355
26.3.5 繪製幾何圖形 .. 356
26.3.6 圖像的灰度化 .. 357
26.3.7 圖像的二值化與閾值 ................................ 358
26.3.8 人臉檢測 .......... 360
26.4 項目實戰:網站驗證碼識別 ................................... 361
26.4.1 驗證碼 ............. 361
26.4.2 驗證碼識別 ...... 361
26.4.3 安裝OCR 引擎Tesseract .......................... 361
26.4.4 安裝pytesseract 庫 ................................... 361
26.4.5 安裝pillow 庫 .. 362
26.4.6 驗證碼識別代碼實現 ................................ 363

27 章項目實戰5:Python Web Flask 框架——PetStore 寵物商店項目.................................. ...365
27.1 Web 應用程序概述 ........ 365
27.1.1 HTTP/HTTPS .. 365
27.1.2 B/S 網絡架構 ... 365
27.1.3 Web 前端技術 .. 366
27.2 Flask 框架介紹 .............. 366
27.3 編寫Flask 程序 ............. 366
27.3.1 安裝Flask ........ 366
27.3.2 一個Flask 程序 ..................................... 366
27.3.3 路由 ................. 368
27.4 Jinja2 模板 ................... 371
27.4.1 沒有使用模板 .. 371
27.4.2 使用模板 .......... 372
27.4.3 模板中使用表達式 .................................... 373
27.4.4 模板中使用語句 ........................................ 374
27.4.5 模板中訪問靜態文件 ................................ 377
27.5 處理HTTP 作 ............ 378
27.5.1 使用request 請求對象 .............................. 378
27.5.2 使用response 響應對象 ............................ 381
27.5.3 使用session 對象 ...................................... 382
27.6 PetStore 寵物商店項目——需求與設計 ................. 383
27.6.1 項目概述 .......... 383
27.6.2 需求分析 .......... 383
27.6.3 原型設計 .......... 384
27.6.4 數據庫設計 ...... 384
27.6.5 架構設計 .......... 386
27.6.6 系統設計 .......... 387
27.7 PetStore 寵物商店項目——創建數據庫 ................. 388
27.7.1 安裝和配置MySQL 數據庫 ...................... 388
27.7.2 編寫數據庫DDL 腳本 .............................. 388
27.7.3 插入初始數據到數據庫 ............................. 389
27.8 PetStore 寵物商店項目——創建項目 ..................... 390
27.8.1 創建項目 .......... 390
27.8.2 項目包結構 ...... 390
27.8.3 項目配置文件 .. 391
27.9 PetStore 寵物商店項目——數據持久層 .................. 391
27.9.1 編寫DAO 基類 391
27.9.2 用戶管理DAO . 392
27.9.3 商品管理DAO . 393
27.9.4 訂單管理DAO . 395
27.9.5 訂單明細管理DAO .................................. 396
27.10 PetStore 寵物商店項目——表示層 ....................... 397
27.10.1 啟動模塊實現 397
27.10.2 登錄頁面實現 398
27.10.3 商品列表 ........ 400
27.10.4 添加商品到購物車 .................................. 403
27.10.5 查看購物車 .... 404
27.10.6 提交訂單 ........ 407

28 章項目實戰6:Python 綜合技術——QQ 聊天工具開發................................... ......................410
28.1 系統分析與設計 ............ 410
28.1.1 項目概述 .......... 410
28.1.2 需求分析 .......... 410
28.1.3 原型設計 .......... 411
28.1.4 數據庫設計 ...... 412
28.1.5 網絡拓撲圖 ...... 414
28.1.6 系統設計 .......... 414
28.2 任務1:創建服務器端數據庫 ................................ 415
28.2.1 迭代1.1:安裝和配置MySQL 數據庫 ..... 415
28.2.2 迭代1.2:編寫數據庫DDL 腳本 ............. 415
28.2.3 迭代1.3:插入初始數據到數據庫 ............ 416
28.3 任務2:創建項目 ......... 416
28.3.1 迭代2.1:創建QQ 客戶端項目 ................ 416
28.3.2 迭代2.2:QQ 客戶端項目中添加資源圖片.................................... ............................. 417
28.3.3 迭代2.3:QQ 客戶端項目中添加包 ......... 417
28.3.4 迭代2.4:創建QQ 服務器項目 ................ 418
28.3.5 迭代2.5:QQ 服務器項目中添加包 ......... 418
28.4 任務3:服務器項目數據持久層 ............................ 418
28.4.1 迭代3.1:服務器端配置文件 ................... 418
28.4.2 迭代3.2:編寫base_dao 模塊 .................. 419
28.4.3 迭代3.3:編寫用戶管理DAO 類 ............. 419
28.5 任務4:QQ 客戶端項目UI 實現 ........................... 421
28.5.1 迭代4.1:客戶端配置文件 ....................... 421
28.5.2 迭代4.2:編寫my_frame 模塊 ................ 421
28.5.3 迭代4.3:登錄窗口實現 .......................... 423
28.5.4 迭代4.4:好友列表窗口實現 ................... 425
28.5.5 迭代4.5:聊天窗口實現 ........................... 428
28.6 任務5:用戶登錄過程實現 .................................... 430
28.6.1 迭代5.1:QQ 客戶端啟動 ........................ 431
28.6.2 迭代5.2:客戶端登錄過程實現................ 432
28.6.3 迭代5.3:QQ 服務器端啟動 .................... 434
28.6.4 迭代5.4:登錄過程的服務器端驗證 ........ 435
28.7 任務6:刷新好友列表 .. 437
28.7.1 迭代6.1:服務器端刷新好友列表 ............ 437
28.7.2 迭代6.2:客戶端刷新好友列表................ 439
28.8 任務7:聊天過程實現 .. 441
28.8.1 迭代7.1:客戶端用戶1 向服務器發送消息.................................... ............................ 442
28.8.2 迭代7.2:服務器端接收用戶1 消息與轉發給用戶3 消息................................ .......... 443
28.8.3 迭代7.3:客戶端用戶3 接收用戶1 消息 . 444
28.9 任務8:用戶下線 ......... 445
28.9.1 迭代8.1:客戶端實現 .............................. 446
28.9.2 迭代8.2:服務器端實現 ........................... 447