本書是一部系統論述Python 編程語言、OOP 編程思想以及函數式編程思想的立體化教程(含圖書、教學課件、源代碼與視頻教程)。全書共分為四篇:篇Python 語言基礎( ~ 8 章),第二篇Python 編程進階(第9 ~17 章),第三篇Python 常用庫與框架(8 ~ 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版是Python入門經典,累計10多萬讀者由此步入Python殿堂!為便於讀者高效學習,快速掌握Python 編程方法,本書第2版提供完整的教學課件、完整的源代碼與豐富的配套視頻教程等內容。
Python 語言誕生至今將近30 年,但是在前20 年裡,在國內使用Python 進行軟件開發的程序員並不多。而在近5 年的時間裡,人們對Python 語言的關注度迅速提高,這不僅因為Python 語言非常優秀,更是由於當前科學計算、人工智能、大數據和區塊鏈等新技術發展帶來的需要。Python 語言具有優良的動態特性、膠水語言特性、簡單的語法和面向物件特性,並擁有成熟而豐富的第三方庫。其主要應用領域涵蓋了熱門的人工智能開發、數據挖掘、嵌入式開發、Web 開發與後端服務開發,擁有健全的語言生態和廣泛的應用場景——這是大量程序員從其他編程語言轉向Python 的主要原因,也是廣大高校計算機類、電子信息類、自動化類專業將Python 作為程序設計基礎課程的原因。也正是由於這種迫切的教育需求,筆者精心編著了本書。根據第1 版中廣大讀者的反饋,以及Python新功能變化,《Python 從小白到大牛》(第2 版)變化如下:
(1)IDE 工具不再推薦使用Eclipse PyDev 和Visual Studio Code,而推薦使用PyCharm。
(2)介紹搭建自己的Web 服務器。
(3)數據庫升級為MySQL 8。
(4)增加了計算機視覺技術介紹。
(5)增加了數據分析技術介紹。
(6)增加了Python Web Flask 框架介紹。
(7)PetStore 寵物商店項目改為用Web 技術實現。
(8)增加了網站驗證碼識別項目。
本書是Python 計算機編程語言入門圖書。無論讀者是Python 編程愛好者、高校計算機相關專業學生、還是從事軟件開發的工程師,都可以從本書入門,成為Python 程序員。如果讀者想深入學習Python 在某一領域的應用技術,則需要進一步閱讀相關書籍。
本書繼續采用立體化圖書概念,所謂“立體化圖書”就是圖書包含書籍、配套視頻、配套課件、配套源代碼和服務等內容。
除關東升外,趙志榮、趙大羽、關錦華、閆婷嬌、王馨然、關秀華和趙浩丞也參與本書部分內容的寫作。感謝趙浩丞手繪了書中全部草圖,並從專業的角度修改書中圖片,力求更加真實完美地奉獻給廣大讀者。
由於Python 編程應用不斷更新迭代,加之作者水平有限,書中難免存在疏漏與不妥之處,懇請讀者提出寶貴意見,以便再版改進。
關東升 2021 年1 月
推薦序 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 Shell15
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
Python 6 從小白到大牛(第2 版)
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
目錄7
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
Python 8 從小白到大牛(第2 版)
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
目錄9
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
Python 10 從小白到大牛(第2 版)
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 根類——object134
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
目錄11
14.3.1 AttributeError 異常139
14.3.2 OSError 異常 140
14.3.3 IndexError 異常 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-except 語句 142
14.4.2 多個except 代碼塊143
14.4.3 try-except 語句嵌套 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
Python 12 從小白到大牛(第2 版)
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
目錄13
第三篇 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-API216
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 NoSQL 數據存儲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
Python 14 從小白到大牛(第2 版)
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 編程API231
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/HTTPS239
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 章 wxPython 圖形用戶界面編程 247
21.1 Python 圖形用戶界面開發工具包 247
21.2 wxPython 安裝247
21.3 wxPython 基礎248
21.3.1 wxPython 類層次結構 248
21.3.2 第一個wxPython 程序 248
21.3.3 wxPython 界面構建層次結構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 Box 布局器 258
21.5.4 StaticBox 布局 260
目錄15
21.5.5 Grid 布局 261
21.5.6 FlexGrid 布局263
21.6 wxPython 基本控件 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
第四篇 Python 項目實戰
第23 章 項目實戰1:網絡爬蟲技術——爬取搜狐證券股票數據 297
23.1 網絡爬蟲技術概述297
Python 16 從小白到大牛(第2 版)
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 安裝Jupyter322
24.2.2 使用IPython Shell 323
24.2.3 使用Jupyter Notebook 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 數據分析必備庫——pandas331
24.4.1 pandas 庫安裝332
目錄17
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
Python 18 從小白到大牛(第2 版)
26.4.2 驗證碼識別 361
26.4.3 安裝OCR 引擎Tesseract361
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/HTTPS365
27.1.2 B/S 網絡架構 365
27.1.3 Web 前端技術366
27.2 Flask 框架介紹366
27.3 編寫Flask 程序 366
27.3.1 安裝Flask366
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
目錄19
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
Python 20 從小白到大牛(第2 版)
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
大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。
特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。
無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。
為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。
若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。