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