本書主要內容分為 Python 編程入門和提高兩個組成部分。入門部分介紹 Python 語言的基礎知識,
包括環(huán)境搭建、代碼運行方式、基本語法、常用數據結構、函數編程以及面向對象編程等。提高部分介
紹重要的 Python 中高級編程知識和技術,包括高級函數編程和面向對象編程知識,例如函數對象、裝
飾器、閉包、類的定制、多重繼承與混入、元編程等,以及性能優(yōu)化技術、混合編程、并發(fā)與異步編程。
另外,本書還涵蓋了數據分析與 Web 開發(fā)兩大 Python 應用領域的基礎知識。在數據分析方面,介紹了
NumPy、SciPy、Pandas、Matplotlib、Scikit-learn 等常用工具包的基本使用方法和實例。在 Web 開發(fā)方
面,介紹了 HTTP 等 Web 開發(fā)基礎知識,以及 WebSocket 協(xié)議、WSGI 應用和 ASGI 應用的原理,并
終使讀者能夠實現(xiàn)自己的 Web 編程框架。
本書可以作為計算機應用、人工智能、信息管理與信息系統(tǒng)等相關專業(yè)本科生編程基礎課程的教材
或參考書,也可以供 Python 學習者、Web 開發(fā)人員和數據分析研究人員參考。
1章 Python 概述 1
1.1 Python 語言 1
1.1.1 Python 語言的發(fā)展 1
1.1.2 Python 語言的特點 2
1.1.3 Python 的主要應用領域 3
1.2 Python 運行環(huán)境 3
1.2.1 Python 的不同實現(xiàn)和發(fā)行版 4
1.2.2 Python 環(huán)境的安裝 4
1.3 Python 程序的運行 8
1.3.1 交互模式 8
1.3.2 腳本模式 9
1.4 常用開發(fā)工具 10
1.5 Python 虛擬環(huán)境 12
1.5.1 什么是虛擬環(huán)境 12
1.5.2 虛擬環(huán)境的創(chuàng)建和使用 12
1.6 小結 13
1.7 思考與練習 14
2章 Python 編程基礎 15
2.1 變量與表達式 15
2.1.1 變量的定義與賦值 15
2.1.2 算術表達式 16
2.1.3 關系表達式與邏輯表達式 17
2.1.4 海象運算符 18
2.1.5 運算符的優(yōu)先級 19
2.2 語句 19
2.2.1 簡單語句 19
2.2.2 復合語句與空語句 20
2.2.3 注釋 21
2.3 數據類型 21
2.3.1 基本數據類型 22
2.3.2 空類型 25
2.3.3 擴展數據類型 26
2.4 流程控制 27
2.4.1 結構化程序設計 27
2.4.2 選擇 27
2.4.3 循環(huán) 29
2.5 模塊和包 31
2.5.1 模塊和包的導入 31
2.5.2 自定義包 32
2.5.3 常用內置模塊 33
2.6 Python 編程規(guī)范 34
2.6.1 規(guī)范編碼的重要性 34
2.6.2 PEP8 規(guī)范 34
2.7 小結 35
2.8 思考與練習 36
3章 常用數據結構 37
3.1 序列 37
3.1.1 序列的種類 37
3.1.2 序列的基本作 38
3.2 列表 41
3.2.1 列表的定義 41
3.2.2 列表元素的作 41
3.2.3 列表推導式 44
3.2.4 棧 46
3.3 元組 46
3.3.1 定義和使用 46
3.3.2 元組的不可變陷阱 47
3.3.3 生成器推導式 47
3.4 集合 48
3.4.1 集合的定義 48
3.4.2 常用集合作方法 49
3.4.3 集合推導式 50
3.4.4 排列組合 50
3.5 字典 51
3.5.1 字典的定義 51
3.5.2 字典常用作方法 52
3.5.3 字典推導式 53
3.6 字符串 53
3.6.1 字符串的定義 54
3.6.2 常用字符串處理方法 54
3.6.3 字符串格式化 56
3.7 二進制序列 59
3.7.1 字節(jié)串的原理 59
3.7.2 字節(jié)串的應用 60
3.8 高級數據結構 60
3.8.1 collection 模塊 60
3.8.2 array.array 62
3.8.3 其他有用的數據結構 63
3.9 小結 63
3.10 思考與練習 63
4章 函數與函數編程 64
4.1 函數的定義與調用 64
4.1.1 函數的定義 64
4.1.2 函數的調用 66
4.1.3 變量的作用域 67
4.2 函數的參數 69
4.2.1 位置參數與關鍵字參數 69
4.2.2 可選參數 71
4.2.3 可變參數 71
4.2.4 參數分配 72
4.3 函數的類型注解 73
4.3.1 類型注解 73
4.3.2 typing 模塊 74
4.3.3 類型注解的使用 76
4.4 函數對象 76
4.4.1 一等對象 76
4.4.2 Python 函數的面向對象特征 77
4.4.3 Python 函數的一等對象特征 78
4.5 嵌套函數與閉包 80
4.5.1 嵌套函數 80
4.5.2 閉包 81
4.6 函數裝飾器 84
4.6.1 簡單函數裝飾器 84
4.6.2 函數裝飾器的工作原理 85
4.6.3 函數裝飾器的優(yōu)化 87
4.6.4 裝飾器的疊加 90
4.6.5 含參裝飾器 92
4.6.6 函數裝飾器應用實例 94
4.6.7 重要的 Python 內置裝飾器 95
4.7 常用函數編程工具 97
4.7.1 常用工具函數 97
4.7.2 operator 模塊 98
4.7.3 itertools 模塊 98
4.8 小結 99
4.9 思考與練習 99
5章 面向對象編程基礎 100
5.1 面向對象的概念與特征 100
5.1.1 面向對象的概念 100
5.1.2 類與對象 101
5.1.3 封裝性 102
5.1.4 繼承性 103
5.1.5 多態(tài)性 103
5.2 類的定義與實例化 104
5.2.1 類的定義 104
5.2.2 類的實例化 105
5.2.3 成員的隱藏 108
5.2.4 類命名空間 109
5.3 進一步了解屬性 110
5.3.1 類屬性與實例屬性 110
5.3.2 property 裝飾器 111
5.4 進一步了解方法 113
5.4.1 實例方法、類方法與靜態(tài)方法 113
5.4.2 方法重載 115
5.5 類的繼承 116
5.5.1 派生類的定義 116
5.5.2 方法重寫 117
5.5.3 多重繼承 119
5.5.4 對象、類的關系 120
5.5.5 調用基類方法 122
5.6 混入 124
5.6.1 混入的概念 124
5.6.2 Python 中的混入 126
5.7 小結 130
5.8 思考與練習 130
6章 面向對象編程進階 131
6.1 類的定制 131
6.1.1 常用特殊屬性 131
6.1.2 對象運算 134
6.1.3 對象描述 136
6.1.4 對象成員訪問控制 137
6.1.5 描述器 139
6.1.6 可調用對象 140
6.1.7 容器 141
6.1.8 迭代器與可迭代對象 142
6.2 生成器 144
6.2.1 生成器的創(chuàng)建 144
6.2.2 生成器與迭代器 146
6.3 類裝飾器 147
6.3.1 修飾方法的裝飾器 147
6.3.2 修飾類的裝飾器 148
6.3.3 基于類的裝飾器 150
6.4 抽象基類 153
6.4.1 抽象基類的概念 153
6.4.2 抽象基類的使用 154
6.4.3 常用內置抽象基類 157
6.4.4 自定義抽象基類 158
6.5 元類 158
6.5.1 Python 類的特征 158
6.5.2 元類的定義與使用 160
6.5.3 元類的應用實例 161
6.6 對象序列化 163
6.6.1 pickle 164
6.6.2 copyreg 166
6.6.3 shelve 168
6.7 小結 169
6.8 思考與練習 169
7章 調試與測試 170
7.1 調試方法 170
7.1.1 利用 print 調試程序 170
7.1.2 利用 logging 調試程序 171
7.1.3 pdb 調試器 173
7.2 異常處理 175
7.2.1 異常的原因 175
7.2.2 斷言 176
7.2.3 異常處理 177
7.2.4 異常的類型 180
7.3 單元測試 182
7.3.1 單元測試的概念及工具 182
7.3.2 unittest 基礎 183
7.3.3 創(chuàng)建測試用例 184
7.3.4 運行測試用例 185
7.3.5 測試套件的創(chuàng)建與執(zhí)行 186
7.3.6 測試設施 187
7.4 文檔測試 188
7.4.1 文檔測試用例 188
7.4.2 運行文檔測試 188
7.5 小結 189
7.6 思考與練習 189
8章 數據處理與分析基礎 190
8.1 文件讀寫 190
8.1.1 文件的打開和關閉 190
8.1.2 路徑管理 191
8.1.3 文本文件讀寫 193
8.1.4 二進制文件讀寫 194
8.2 上下文管理 195
8.2.1 with 語句塊 195
8.2.2 上下文管理協(xié)議 196
8.3 數據庫編程 198
8.3.1 數據庫應用編程接口 198
8.3.2 嵌入式數據庫編程 200
8.4 正則表達式 202
8.4.1 正則表達式匹配規(guī)則 202
8.4.2 正則表達式的應用 205
8.4.3 正則表達式的編譯 206
8.5 數據分析中的數據結構 207
8.5.1 NumPy 207
8.5.2 SciPy 211
8.6 數據可視化 214
8.6.1 簡單繪圖 214
8.6.2 圖像的配置與修飾 215
8.6.3 多子圖圖像的繪制 218
8.6.4 三維圖像的繪制 219
8.7 Pandas 基礎 220
8.7.1 數據結構 221
8.7.2 數據訪問 223
8.7.3 統(tǒng)計分析 225
8.8 Scikit-learn 基礎 226
8.8.1 Scikit-learn 簡介 226
8.8.2 分類問題 227
8.8.3 聚類問題 229
8.9 小結 230
8.10 思考與練習 230
9章 性能優(yōu)化技術 232
9.1 程序性能分析 232
9.1.1 time 與 timeit 232
9.1.2 profile 235
9.2 即時編譯技術 237
9.2.1 即時編譯的概念 237
9.2.2 PyPy 238
9.2.3 Numba 239
9.3 混合編程概念及環(huán)境搭建 242
9.4 利用 ctypes 實現(xiàn)混合編程 243
9.4.1 C 函數庫的調用 243
9.4.2 C 類的包裝 247
9.5 利用 C API 構建 Python 擴展 249
9.5.1 構建 Python 擴展的步驟 249
9.5.2 擴展函數 249
9.5.3 模塊配置與初始化 252
9.5.4 擴展的構建與安裝 252
9.5.5 實例 252
9.6 項目打包與發(fā)布 257
9.6.1 打包與發(fā)布的流程 257
9.6.2 項目打包與發(fā)布示例 259
9.7 小結 261
9.8 思考與練習 261
10章 網絡編程與并發(fā)處理 262
10.1 網絡套接字的概念 262
10.1.1 套接字的類型 262
10.1.2 基于套接字的網絡通信過程 263
10.2 套接字編程 264
10.2.1 socket 模塊 264
10.2.2 面向連接的套接字編程 266
10.2.3 面向無連接的套接字編程 267
10.2.4 并發(fā)問題 268
10.3 多進程編程 269
10.3.1 進程的創(chuàng)建與運行 269
10.3.2 利用多進程處理網絡并發(fā) 271
10.3.3 利用進程池處理網絡并發(fā) 272
10.4 多線程編程 274
10.4.1 線程的概念與特點 274
10.4.2 網絡并發(fā)處理的多線程方法 275
10.5 異步編程 275
10.5.1 異步編程概念 275
10.5.2 基于生成器的協(xié)程 276
10.5.3 協(xié)程 280
10.5.4 Python 異步編程基礎 281
10.5.5 利用異步編程處理網絡并發(fā) 282
10.6 套接字服務器 285
10.6.1 socketserver 模塊簡介 285
10.6.2 利用套接字服務器處理網絡并發(fā) 286
10.7 小結 286
10.8 思考與練習 287
11章 Web 的概念與原理 288
11.1 Web 概念與開發(fā)技術 288
11.1.1 Web 的概念 288
11.1.2 Web 頁面的訪問過程 290
11.1.3 Web 開發(fā)技術棧 290
11.2 統(tǒng)一資源標識符 291
11.2.1 統(tǒng)一資源定位符 292
11.2.2 URL 的解析 292
11.3 文本標記語言 293
11.3.1 HTML 文檔的結構 293
11.3.2 HTML 文檔的修飾與控制 295
11.4 文本傳輸協(xié)議 297
11.4.1 HTTP 請求 298
11.4.2 HTTP 響應 300
11.4.3 HTTP 協(xié)議解析 302
11.5 Web 服務器的工作原理 305
11.5.1 基于套接字的 Web 服務器端
.............................
第12章 PythonWed 開發(fā)技術
參考文獻