第Ⅰ部分 基礎(chǔ)篇
第1章
從零開始 2
視頻講解:35分鐘
1.1 概述 3
1.2 什么是Python語言 3
1.3 安裝Python 5
1.3.1
安裝準(zhǔn)備工作 5
1.3.2
安裝Python的過程 5
1.4
Python代碼編輯工具 8
1.4.1
交互式解釋器 9
1.4.2
自帶GUI工具IDLE 10
1.4.3
其他商業(yè)級(jí)開發(fā)工具 11
1.5 第一個(gè)程序 12
1.5.1
案例[嗨,三酷貓。 12
1.5.2
Help 14
1.5.3
出錯(cuò)與調(diào)試 14
1.6 良好的編程約定 17
1.7 習(xí)題及實(shí)驗(yàn) 20
第2章
變量和簡單數(shù)據(jù)類型 22
視頻講解:27分鐘
2.1 變量 23
2.2 字符串 23
2.2.1
字符串基本操作 24
2.2.2
其他常用操作 26
2.2.3
案例[三酷貓釣魚記錄] 27
2.3 數(shù)字和運(yùn)算符 27
2.3.1
算術(shù)運(yùn)算符 28
2.3.2
整數(shù) 28
2.3.3
浮點(diǎn)數(shù) 29
2.3.4
復(fù)數(shù) 29
2.3.5
布爾 29
2.3.6
二進(jìn)制 30
2.3.7
比較運(yùn)算符 31
2.3.8
賦值運(yùn)算符 33
2.4 數(shù)據(jù)類型轉(zhuǎn)換 33
2.5 案例[三酷貓記賬單] 34
2.6 習(xí)題及實(shí)驗(yàn) 35
第3章 條件分支與循環(huán) 37
視頻講解:37分鐘
3.1
if條件分支 38
3.1.1
if語句基本用法 38
3.1.2
案例[三酷貓判斷找魚] 39
3.2
while循環(huán) 40
3.2.1
while語句基本用法 40
3.2.2
案例[三酷貓線性法找魚] 42
3.3
for循環(huán)語句 43
3.3.1
for語句基本用法 43
3.3.2
案例[三酷貓統(tǒng)計(jì)魚數(shù)量] 45
3.4 循環(huán)控制語句 45
3.4.1
break語句 45
3.4.2
continue語句 46
3.5 復(fù)雜條件及處理 47
3.5.1
成員運(yùn)算符 47
3.5.2
身份運(yùn)算符 48
3.5.3
運(yùn)算符優(yōu)先級(jí) 49
3.6 案例[三酷貓核算收入] 50
3.7 習(xí)題及實(shí)驗(yàn) 51
第4章 列表與元組 53
視頻講解:29分鐘
4.1 接觸列表 54
4.1.1
列表基本知識(shí) 54
4.1.2
列表元素增加 56
4.1.3
列表元素查找 56
4.1.4
列表元素修改 57
4.1.5
列表元素刪除 57
4.1.6
列表元素合并 59
4.1.7
列表元素排序 59
4.1.8
列表其他操作方法 60
4.2 基于列表算法 62
4.2.1
案例[三酷貓列表記賬] 62
4.2.2
案例[三酷貓冒泡法排序] 64
4.2.3
案例[三酷貓二分法查找] 65
4.2.4
案例[三酷貓列表統(tǒng)計(jì)] 67
4.3 元組 68
4.3.1
元組基本知識(shí) 68
4.3.2
元組操作實(shí)例 69
4.4 案例[三酷貓釣魚花樣大統(tǒng)計(jì)] 72
4.5 習(xí)題及實(shí)驗(yàn) 74
第5章 字典 76
視頻講解:23分鐘
5.1 接觸字典 77
5.1.1
字典基本知識(shí) 77
5.1.2
字典元素增加 78
5.1.3
字典值查找 79
5.1.4
字典值修改 80
5.1.5
字典元素刪除 80
5.1.6
字典遍歷操作 81
5.1.7
字典其他操作方法 83
5.2 字典嵌套 84
5.2.1
字典嵌入字典 84
5.2.2
列表嵌入字典 85
5.2.3
字典嵌入列表 86
5.3 基于字典算法 87
5.3.1
案例[三酷貓字典記賬] 87
5.3.2
案例[三酷貓字典修改] 88
5.3.3
案例[三酷貓分類統(tǒng)計(jì)] 90
5.4 案例[三酷貓管理復(fù)雜的釣魚賬本] 92
5.5 習(xí)題及實(shí)驗(yàn) 95
第6章 函數(shù) 97
視頻講解:19分鐘
6.1 函數(shù)基本知識(shí) 98
6.1.1
為什么要使用函數(shù) 98
6.1.2
函數(shù)基本定義 99
6.2 自定義函數(shù)第一步 100
6.2.1
不帶參數(shù)函數(shù) 100
6.2.2
帶參數(shù)函數(shù) 101
6.2.3
帶返回值函數(shù) 102
6.2.4
自定義函數(shù)的完善 103
6.2.5
把函數(shù)放到模塊中 105
6.3 自定義函數(shù)第二步 108
6.3.1
參數(shù)的變化 108
6.3.2
傳遞元組、列表、字典值 111
6.3.3
函數(shù)與變量作用域 113
6.3.4
匿名函數(shù) 115
6.3.5
遞歸函數(shù) 115
6.4 案例[三酷貓利用函數(shù)方法實(shí)現(xiàn)記賬統(tǒng)計(jì)] 119
6.4.1
函數(shù)統(tǒng)計(jì)需求 119
6.4.2
主程序?qū)崿F(xiàn) 120
6.4.3
自定義函數(shù)實(shí)現(xiàn) 120
6.4.4
本案例代碼執(zhí)行結(jié)果 122
6.5 習(xí)題及實(shí)驗(yàn) 123
第7章 類 124
視頻講解:27分鐘
7.1 初識(shí)類 125
7.1.1
為什么要引入類 125
7.1.2
案例[編寫第一個(gè)類] 127
7.1.3
實(shí)例 128
7.2 屬性使用 130
7.2.1
屬性值初始化 130
7.2.2
屬性值修改 131
7.2.3
把類賦給屬性 132
7.3 類改造問題 133
7.3.1
繼承 133
7.3.2
重寫方法 134
7.4 私有 134
7.5 把類放到模塊中 135
7.5.1
建立獨(dú)立類模塊過程 136
7.5.2
案例[把盒子類放到類模塊中] 136
7.6 類回顧 137
7.6.1
靜態(tài)類 137
7.6.2
類與實(shí)例概念總結(jié) 139
7.6.3
類與面向?qū)ο缶幊?139
7.6.4
類編寫其他事項(xiàng) 140
7.7 案例[三酷貓把魚裝到盒子里] 141
7.8 習(xí)題及實(shí)驗(yàn) 143
第8章 標(biāo)準(zhǔn)庫 145
視頻講解:25分鐘
8.1
Python標(biāo)準(zhǔn)庫知識(shí) 146
8.2
datetime模塊 146
8.3
math模塊 149
8.4
random模塊 151
8.5
os模塊 152
8.6
sys模塊 153
8.7
time模塊 154
8.8 再論模塊 155
8.8.1
模塊文件 155
8.8.2
包 156
8.9 窺探標(biāo)準(zhǔn)庫源碼 157
8.10
案例[三酷貓解放了] 159
8.11
習(xí)題及實(shí)驗(yàn) 160
第9章 異常 161
視頻講解:16分鐘
9.1 程序中的問題 162
9.2 捕捉異常 163
9.2.1
基本異常捕捉語句 163
9.2.2
帶finally子句的異常處理 165
9.2.3
捕捉特定異常信息 166
9.3 拋出異常 167
9.4 習(xí)題及實(shí)驗(yàn) 168
第Ⅱ部分 Python提高篇
第10章 文件處理 170
視頻講解:20分鐘
10.1
文本文件 171
10.1.1
建立文件 171
10.1.2
基本的讀寫文件 172
10.1.3
復(fù)雜的讀寫文件 174
10.1.4
文件異常處理 176
10.1.5
文件與路徑 177
10.1.6
案例[三酷貓把釣魚結(jié)果數(shù)據(jù)存入文件] 179
10.2
JSON格式文件 180
10.2.1
JSON格式 181
10.2.2
讀寫JSON文件 182
10.3
XML格式文件 184
10.3.1
初識(shí)XML 184
10.3.2
生成XML文件 185
10.3.3
xml模塊 187
10.3.4
用SAX讀XML文件 188
10.3.5
用DOM讀寫XML文件 190
10.4
案例[三酷貓自建文件數(shù)據(jù)庫] 193
10.5
習(xí)題及實(shí)驗(yàn) 199
第11章 圖形用戶界面 201
視頻講解:26分鐘
11.1
初識(shí)圖形用戶界面 202
11.1.1
接觸圖形用戶界面 202
11.1.2
相關(guān)開發(fā)工具 203
11.2
tkinter開發(fā)包 203
11.2.1
窗體 203
11.2.2
組件 205
11.2.3
常見事件類型 207
11.2.4
常見屬性對(duì)象 208
11.3
tkinter模塊下基本組件 209
11.3.1
tkinter下組件清單 209
11.3.2
簡易組件使用案例 210
11.3.3
Menu及messagebox組件使用案例 213
11.3.4
Canvas組件使用案例 215
11.3.5
PhotoImage組件使用案例 216
11.4
ttk子模塊下組件 217
11.4.1
Combobox組件 217
11.4.2
Notebook組件 218
11.4.3
Progressbar組件 219
11.4.4
Sizegrip組件 219
11.4.5
Treeview組件 220
11.5
tix子模塊下組件 222
11.5.1
文件選擇類組件 222
11.5.2
ButtonBox組件 223
11.6
scrolledtext子模塊下組件 224
11.7
拖拽組件 225
11.8
編譯成可執(zhí)行文件的實(shí)現(xiàn)過程 228
11.9
案例[三酷貓做到了數(shù)據(jù)可視化] 230
11.10
美輪美奐的turtle 231
11.11
習(xí)題及實(shí)驗(yàn) 233
第12章 數(shù)據(jù)庫操作 235
視頻講解:17分鐘
12.1
數(shù)據(jù)庫使用概述 236
12.1.1
數(shù)據(jù)庫基本知識(shí) 236
12.1.2
訪問數(shù)據(jù)庫基本原理 237
12.1.3
ODBC與ADO 238
12.2
關(guān)系型數(shù)據(jù)庫 238
12.2.1
關(guān)系型數(shù)據(jù)庫支持清單 238
12.2.2
連接SQLite 239
12.2.3
連接MySQL 242
12.2.4
連接Oracle 247
12.2.5
案例[三酷貓建立記賬管理系統(tǒng)] 249
12.3
NoSQL數(shù)據(jù)庫 251
12.3.1
NoSQL數(shù)據(jù)庫支持清單 252
12.3.2
連接MongoDB 252
12.3.3
連接Redis 254
12.4
習(xí)題及實(shí)驗(yàn) 255
第13章 線程與進(jìn)程 257
視頻講解:17分鐘
13.1
接觸多任務(wù)技術(shù) 258
13.1.1
進(jìn)程與線程簡介 258
13.1.2
多線程模塊 259
13.2
第一個(gè)多線程[搶火車票] 262
13.2.1
不使用線程 262
13.2.2
threading函數(shù)方式實(shí)現(xiàn) 264
13.2.3
threading類方式實(shí)現(xiàn) 266
13.3
線程同步 268
13.3.1
多線程競爭出錯(cuò) 268
13.3.2
嘗試讓多線程共享數(shù)據(jù)出錯(cuò) 268
13.3.3
CPython的痛 271
13.3.4
加鎖 273
13.3.5
防止死鎖 273
13.4
線程隊(duì)列模塊 275
13.5
并發(fā)進(jìn)程模塊 278
13.5.1
Process創(chuàng)建多進(jìn)程 279
13.5.2
基于Pool的多進(jìn)程 280
13.5.3
基于Pipe的多進(jìn)程 282
13.5.4
基于Queue的多進(jìn)程 283
13.6
其他同步方法 284
13.7
案例[三酷貓玩爬蟲] 285
13.7.1
需求與準(zhǔn)備工作 285
13.7.2
簡易多線程爬蟲實(shí)現(xiàn) 286
13.8
習(xí)題及實(shí)驗(yàn) 287
第14章 測試及打包 288
14.1
代碼測試 289
14.1.1
doctest 289
14.1.2
unittest 291
14.2
代碼打包 293
14.2.1
distutils模塊 294
14.2.2
基本打包與安裝 295
14.2.3
擴(kuò)展打包與安裝 297
14.2.4
編寫安裝配置文件 297
14.2.5
源碼發(fā)布格式 299
14.3
習(xí)題及實(shí)驗(yàn) 299
第Ⅲ部分 Python拓展篇
第15章
Web應(yīng)用入門 302
視頻講解:11分鐘
15.1
Web基礎(chǔ)知識(shí) 303
15.1.1
接觸Web 303
15.1.2
Browser/Server使用原理 305
15.1.3
網(wǎng)頁 307
15.1.4
感覺第一個(gè)Web應(yīng)用 308
15.2
Web服務(wù)器 310
15.2.1
Web服務(wù)器會(huì)做什么工作 311
15.2.2
Apache服務(wù)器 311
15.2.3
IIS服務(wù)器 314
15.3
WSGI服務(wù)器接口 316
15.4
Web應(yīng)用程序開發(fā) 316
15.5
案例[三酷貓簡易網(wǎng)站] 317
15.5.1
網(wǎng)站需求 317
15.5.2
實(shí)現(xiàn)代碼 317
15.6
習(xí)題及實(shí)驗(yàn) 319
第16章
商業(yè)級(jí)別的技術(shù)框架 320
16.1
初識(shí)Web應(yīng)用程序框架 321
16.2
web.py框架 321
16.2.1
使用準(zhǔn)備 321
16.2.2
開發(fā)Web應(yīng)用程序 322
16.2.3
使用模板 323
16.2.4
數(shù)據(jù)庫訪問 324
16.2.5
表單處理 326
16.2.6
使用Session 328
16.2.7
使用Cookie 331
16.2.8
Web實(shí)際使用環(huán)境部署 333
16.3
Django框架 334
16.3.1 Django簡介 334
16.3.2
Django安裝 335
16.3.3
網(wǎng)站(創(chuàng)建項(xiàng)目) 335
16.3.4
網(wǎng)站(連接數(shù)據(jù)庫) 337
16.3.5
網(wǎng)站(創(chuàng)建應(yīng)用) 339
16.3.6
網(wǎng)站(后臺(tái)管理) 341
16.3.7
網(wǎng)站(投票應(yīng)用) 342
16.3.8
網(wǎng)站(學(xué)習(xí)拓展) 346
16.4
案例[三酷貓魚產(chǎn)品動(dòng)態(tài)網(wǎng)站] 346
16.4.1
網(wǎng)站準(zhǔn)備工作 346
16.4.2
建立數(shù)據(jù)庫 346
16.4.3
Web應(yīng)用實(shí)現(xiàn) 347
16.5
習(xí)題及實(shí)驗(yàn) 349
第17章
大數(shù)據(jù)應(yīng)用入門 350
17.1
什么是大數(shù)據(jù) 351
17.1.1
大數(shù)據(jù)基本知識(shí) 351
17.1.2
大數(shù)據(jù)技術(shù)三步曲 352
17.2
案例[一個(gè)完整的網(wǎng)絡(luò)爬蟲] 353
17.2.1
編寫網(wǎng)絡(luò)爬蟲準(zhǔn)備工作 353
17.2.2
基于MongoDB的數(shù)據(jù)存儲(chǔ) 353
17.2.3
爬蟲獲取網(wǎng)頁數(shù)據(jù) 355
17.2.4
爬蟲獲取網(wǎng)頁內(nèi)指定數(shù)據(jù) 357
17.2.5
爬蟲知識(shí)拓展 360
17.3
Python Spark 361
17.3.1
Spark基礎(chǔ)知識(shí) 362
17.3.2
使用環(huán)境安裝 363
17.3.3
pyspark基礎(chǔ) 367
17.3.4
案例[蒙特卡洛法求] 369
17.4
案例[三酷貓了解魚的價(jià)格] 371
17.5
習(xí)題及實(shí)驗(yàn) 372
第18章
AI應(yīng)用入門 374
18.1
什么是人工智能 375
18.1.1
從深藍(lán)到阿爾法狗 375
18.1.2
人工智能基礎(chǔ)知識(shí) 376
18.2
Python AI編程庫 377
18.2.1
科學(xué)計(jì)算和數(shù)據(jù)分析庫 377
18.2.2
數(shù)據(jù)可視化庫 380
18.2.3
計(jì)算機(jī)視覺庫 381
18.2.4
機(jī)器學(xué)習(xí)庫 382
18.2.5
其他知名的第三方庫 383
18.3
NumPy應(yīng)用示例 383
18.3.1
安裝NumPy 383
18.3.2
數(shù)組相關(guān)計(jì)算 384
18.3.3
傅里葉變換 387
18.3.4
案例[一維離散傅里葉變換] 389
18.3.5
案例[二維離散傅里葉變換] 391
18.4
三酷貓的夢(mèng) 392
18.5
習(xí)題及實(shí)驗(yàn) 392
附錄一 IDLE代碼編寫工具菜單使用說明 394
附錄二 字符串轉(zhuǎn)義字符 396
附錄三 ASCII表 397
附錄四 math模塊函數(shù) 401
附錄五 第三方庫列表 404
附錄六 正則表達(dá)式 405
附錄七 附贈(zèng)案例代碼清單 407
參考文獻(xiàn) 411
后記 41