這是一本Python快速入門書,基于Python 3.6編寫。本書分為4部分,*部分講解Python的基礎(chǔ)知識(shí),對(duì)Python進(jìn)行概要的介紹;第二部分介紹Python編程的重點(diǎn),涉及列表、元組、集合、字符串、字典、流程控制、函數(shù)、模塊和作用域、文件系統(tǒng)、異常等內(nèi)容;第三部分闡釋Python的特性,涉及類和面向?qū)ο、正則表達(dá)式、數(shù)據(jù)類型即對(duì)象、包、Python庫(kù)等內(nèi)容;第四部分關(guān)注數(shù)據(jù)處理,涉及數(shù)據(jù)文件的處理、網(wǎng)絡(luò)數(shù)據(jù)、數(shù)據(jù)的保存和數(shù)據(jù)探索,*后給出了相關(guān)的案例。 本書框架結(jié)構(gòu)清晰,內(nèi)容編排合理,講解循序漸進(jìn),并結(jié)合大量示例和習(xí)題,讓讀者可以快速學(xué)習(xí)和掌握Python,既適合Python初學(xué)者學(xué)習(xí),也適合作為專業(yè)程序員的簡(jiǎn)明Python參考書。
Python如今已經(jīng)發(fā)展成為一種令人驚嘆的計(jì)算機(jī)語(yǔ)言,它已強(qiáng)大到足以應(yīng)對(duì)從底層系統(tǒng)資源到應(yīng)用程序(如深度學(xué)習(xí))的方方面面。它既簡(jiǎn)潔、優(yōu)雅又功能完備,還擁有龐大的由庫(kù)和框架構(gòu)成的生態(tài)系統(tǒng)。Python程序員的需求量很大,不熟練掌握Python顯然不行! 本書是Python專業(yè)人士Naomi Ceder編寫的Python語(yǔ)言的綜合指南。她是一位經(jīng)驗(yàn)豐富的教學(xué)者,她既能讓讀者關(guān)注語(yǔ)言的細(xì)節(jié),又能使其具備解決實(shí)際問(wèn)題的能力。本書中配有大量貼切的示例和邊做邊學(xué)的習(xí)題,有助于讀者掌握每一個(gè)重要概念。無(wú)論讀者是要抓取網(wǎng)站內(nèi)容還是想玩轉(zhuǎn)嵌套元組,都會(huì)贊嘆本書的清晰、專注和對(duì)細(xì)節(jié)的重視。 本書主要內(nèi)容 ● 明確涵蓋Python 3。 ● 全面介紹核心庫(kù)、包和工具。 ● 配備精深的習(xí)題。 ● 新增5章與數(shù)據(jù)科學(xué)相關(guān)的內(nèi)容。 本書專為熟悉編程概念的讀者編寫,但不要求讀者具備Python的使用經(jīng)驗(yàn)。
娜奧米·塞德(Naomi Ceder)是Python軟件基金會(huì)zhu席。自2001年以來(lái),她一直在學(xué)習(xí)、使用和教授Python。 她的編程生涯已經(jīng)持續(xù)了近30年,使用過(guò)多種編程語(yǔ)言,做過(guò)Linux系統(tǒng)管理員、編程教師、開(kāi)發(fā)人員和系統(tǒng)架構(gòu)師。她從2001年開(kāi)始使用Python,從此向各個(gè)層次的用戶講授Python,從12歲的孩子到專業(yè)編程人員都有。她向所有人宣傳Python,宣講加入內(nèi)容豐富的社區(qū)的好處。她現(xiàn)在領(lǐng)導(dǎo)著Dick Blick Art Materials的一支開(kāi)發(fā)團(tuán)隊(duì)。
第 一部分 開(kāi)始篇
第 1章 關(guān)于Python 3
1.1 用Python的理由 3
1.2 Python的長(zhǎng)處 3
1.2.1 Python易于使用 4
1.2.2 Python富有表現(xiàn)力 4
1.2.3 Python可讀性好 5
1.2.4 Python功能齊備 5
1.2.5 Python跨平臺(tái) 6
1.2.6 Python免費(fèi) 6
1.3 Python的短板 6
1.3.1 Python不是速度最快的語(yǔ)言 7
1.3.2 Python的庫(kù)不算最多 7
1.3.3 Python在編譯時(shí)不檢查變量類型 7
1.3.4 Python對(duì)移動(dòng)應(yīng)用的支持不足 8
1.3.5 Python對(duì)多處理器的利用不充分 8
1.4 學(xué)Python 3的理由 8
1.5 小結(jié) 9
第 2章 入門 10
2.1 Python的安裝 10
2.2 基礎(chǔ)交互模式和IDLE 12
2.2.1 基礎(chǔ)交互模式 12
2.2.2 IDLE集成開(kāi)發(fā)環(huán)境 13
2.2.3 基礎(chǔ)交互模式和IDLE的適用場(chǎng)景 13
2.3 使用IDLE的Python shell窗口 13
2.4 第 一個(gè)程序Hello, world" 14
2.5 利用交互式提示符探索Python 15
2.6 小結(jié) 16
第3章 Python概述 17
3.1 Python簡(jiǎn)介 17
3.2 內(nèi)置數(shù)據(jù)類型 18
3.2.1 數(shù)值 18
3.2.2 列表 20
3.2.3 元組 21
3.2.4 字符串 22
3.2.5 字典 23
3.2.6 集合 23
3.2.7 文件對(duì)象 23
3.3 流程控制語(yǔ)句結(jié)構(gòu) 24
3.3.1 布爾值和表達(dá)式 24
3.3.2 if-elif-else語(yǔ)句 25
3.3.3 while循環(huán) 25
3.3.4 for循環(huán) 25
3.3.5 函數(shù)定義 26
3.3.6 異!27
3.3.7 用關(guān)鍵字with控制上下文 27
3.4 創(chuàng)建模塊 28
3.5 面向?qū)ο缶幊獭?9
3.6 小結(jié) 31
第二部分 重點(diǎn)內(nèi)容
第4章 基礎(chǔ)知識(shí) 35
4.1 縮進(jìn)和代碼塊構(gòu)建 35
4.2 識(shí)別注釋 36
4.3 變量和賦值 37
4.4 表達(dá)式 38
4.5 字符串 39
4.6 數(shù)值 40
4.6.1 內(nèi)置數(shù)值處理函數(shù) 41
4.6.2 高級(jí)數(shù)值處理函數(shù) 41
4.6.3 數(shù)值計(jì)算 41
4.6.4 復(fù)數(shù) 41
4.6.5 高級(jí)復(fù)數(shù)函數(shù) 42
4.7 None值 43
4.8 獲取用戶輸入 43
4.9 內(nèi)置操作符 44
4.10 基本的Python編碼風(fēng)格 44
4.11 小結(jié) 45
第5章 列表、元組和集合 46
5.1 列表類似于數(shù)組 46
5.2 列表的索引機(jī)制 47
5.3 修改列表 49
5.4 對(duì)列表排序 51
5.4.1 自定義排序 52
5.4.2 sorted()函數(shù) 53
5.5 其他常用的列表操作 53
5.5.1 用in操作符判斷列表成員 53
5.5.2 用 操作符拼接列表 54
5.5.3 用*操作符初始化列表 54
5.5.4 用min和max方法求列表的最小值和最大值 54
5.5.5 用index方法搜索列表 54
5.5.6 用count方法對(duì)匹配項(xiàng)計(jì)數(shù) 55
5.5.7 列表操作小結(jié) 55
5.6 嵌套列表和深復(fù)制 56
5.7 元組 58
5.7.1 元組的基礎(chǔ)知識(shí) 59
5.7.2 單個(gè)元素的元組應(yīng)加上逗號(hào) 60
5.7.3 元組的打包和拆包 60
5.7.4 列表和元組的相互轉(zhuǎn)換 61
5.8 集合 62
5.8.1 集合的操作 62
5.8.2 不可變集合 63
5.9 小結(jié) 64
第6章 字符串 65
6.1 將字符串理解為字符序列 65
6.2 基本的字符串操作 66
6.3 特殊字符和轉(zhuǎn)義序列 66
6.3.1 基本的轉(zhuǎn)義序列 66
6.3.2 數(shù)字格式(八進(jìn)制、十六進(jìn)制)和Unicode編碼的轉(zhuǎn)義序列 67
6.3.3 對(duì)帶特殊字符的字符串打印和求值的差異 68
6.4 字符串方法 68
6.4.1 字符串的split和join方法 69
6.4.2 將字符串轉(zhuǎn)換為數(shù)值 70
6.4.3 去除多余的空白符 71
6.4.4 字符串搜索 72
6.4.5 字符串修改 74
6.4.6 利用列表修改字符串 75
6.4.7 其他有用的字符串方法和常量 75
6.5 將對(duì)象轉(zhuǎn)換為字符串 77
6.6 使用format方法 78
6.6.1 format方法和位置參數(shù) 78
6.6.2 format方法和命名參數(shù) 78
6.6.3 格式描述符 79
6.7 用%格式化字符串 79
6.7.1 使用格式化序列 80
6.7.2 命名參數(shù)和格式化序列 81
6.8 字符串內(nèi)插 82
6.9 bytes對(duì)象 82
6.10 小結(jié) 84
第7章 字典 85
7.1 何為字典 85
7.2 字典的其他操作 87
7.3 單詞計(jì)數(shù) 90
7.4 可用作字典鍵的對(duì)象 90
7.5 稀疏矩陣 91
7.6 將字典用作緩存 92
7.7 字典的效率 93
7.8 小結(jié) 93
第8章 流程控制 94
8.1 while循環(huán) 94
8.2 if-elif-else語(yǔ)句 95
8.3 for循環(huán) 96
8.3.1 range函數(shù) 97
8.3.2 用初值和步進(jìn)值控制range函數(shù) 97
8.3.3 在for循環(huán)中使用break和
continue語(yǔ)句 98
8.3.4 for循環(huán)和元組拆包 98
8.3.5 enumerate函數(shù) 98
8.3.6 zip函數(shù) 99
8.4 列表和字典推導(dǎo)式 99
8.5 語(yǔ)句、代碼塊和縮進(jìn) 101
8.6 布爾值和布爾表達(dá)式 103
8.6.1 大多數(shù)Python對(duì)象都能用作布爾類型 104
8.6.2 比較操作符和布爾操作符 104
8.7 編寫簡(jiǎn)單的文本文件分析程序 105
8.8 小結(jié) 106
第9章 函數(shù) 107
9.1 基本的函數(shù)定義 107
9.2 多種函數(shù)參數(shù) 108
9.2.1 按位置給出形參 108
9.2.2 按形參名稱傳遞實(shí)參 109
9.2.3 變長(zhǎng)實(shí)參 110
9.2.4 多種參數(shù)傳遞方式的混用 111
9.3 將可變對(duì)象用作函數(shù)實(shí)參 111
9.4 局部變量、非局部變量和全局變量 113
9.5 將函數(shù)賦給變量 115
9.6 lambda表達(dá)式 115
9.7 生成器函數(shù) 116
9.8 裝飾器 117
9.9 小結(jié) 118
第 10章 模塊和作用域規(guī)則 120
10.1 何為模塊 120
10.2 編寫第 一個(gè)模塊 121
10.3 import語(yǔ)句 123
10.4 模塊搜索路徑 124
10.5 模塊內(nèi)部私有名稱 126
10.6 庫(kù)和第三方模塊 127
10.7 Python作用域規(guī)則和命名空間 127
10.8 小結(jié) 133
第 11章 Python程序 134
11.1 創(chuàng)建一個(gè)很簡(jiǎn)單的程序 134
11.1.1 從命令行啟動(dòng)腳本 135
11.1.2 命令行參數(shù) 135
11.1.3 腳本輸入/輸出的重定
向 136
11.1.4 argparse模塊 137
11.1.5 fileinput模塊的使用 138
11.2 讓腳本在UNIX下直接運(yùn)行 140
11.3 macOS系統(tǒng)中的腳本 140
11.4 Windows中多種腳本執(zhí)行方式 140
11.4.1 從命令窗口或PowerShell中啟動(dòng)腳本 141
11.4.2 Windows中的其他運(yùn)行方式 141
11.5 程序和模塊 141
11.6 發(fā)布Python應(yīng)用程序 146
11.6.1 wheel包 146
11.6.2 zipapp和pex 146
11.6.3 py2exe和py2app 147
11.6.4 用freeze創(chuàng)建可執(zhí)行程序 147
11.7 小結(jié) 147
第 12章 文件系統(tǒng)的使用 149
12.1 os、os.path和pathlib的對(duì)比 149
12.2 路徑和路徑名 150
12.2.1 絕對(duì)路徑和相對(duì)路徑 150
12.2.2 當(dāng)前工作目錄 151
12.2.3 用pathlib模塊訪問(wèn)目錄 152
12.2.4 路徑名的處理 152
12.2.5 用pathlib處理路徑名 154
12.2.6 常用變量和函數(shù) 155
12.3 獲取文件信息 156
12.4 文件系統(tǒng)的其他操作 158
12.5 處理目錄樹下的所有文件 161
12.6 小結(jié) 162
第 13章 文件的讀寫 165
13.1 打開(kāi)文件及file對(duì)象 165
13.2 關(guān)閉文件 166
13.3 以寫入等模式打開(kāi)文件 166
13.4 讀寫文本及二進(jìn)制數(shù)據(jù)的函數(shù) 167
13.5 用pathlib讀寫文件 169
13.6 屏幕輸入/輸出及重定向 169
13.7 用struct模塊讀取結(jié)構(gòu)化的二進(jìn)制數(shù)據(jù) 172
13.8 用pickle將對(duì)象存入文件 173
13.9 用shelve保存對(duì)象 176
13.10 小結(jié) 178
第 14章 異!179
14.1 異常簡(jiǎn)介 179
14.1.1 錯(cuò)誤和異常處理的一般原則 179
14.1.2 異常較為正式的定義 182
14.1.3 多種異常的處理 182
14.2 Python中的異!182
14.2.1 Python異常的類型 183
14.2.2 引發(fā)異!185
14.2.3 捕獲并處理異!185
14.2.4 自定義新的異!187
14.2.5 用assert語(yǔ)句調(diào)試程序 188
14.2.6 異常的繼承架構(gòu) 188
14.2.7 示例:用Python編寫的磁盤寫入程序 189
14.2.8 示例:正常計(jì)算過(guò)程中的異常 189
14.2.9 異常的適用場(chǎng)合 190
14.3 用到with關(guān)鍵字的上下文管理器 191
14.4 小結(jié) 192
第三部分 高級(jí)特性
第 15章 類和面向?qū)ο缶幊獭?95
15.1 定義類 195
15.2 實(shí)例變量 196
15.3 方法 197
15.4 類變量 199
15.5 靜態(tài)方法和類方法 201
15.5.1 靜態(tài)方法 201
15.5.2 類方法 202
15.6 繼承 203
15.7 類及實(shí)例變量的繼承 205
15.8 概括:Python類的基礎(chǔ)知識(shí) 206
15.9 私有變量和私有方法 208
15.10 用@property獲得更為靈活的實(shí)例變量 209
15.11 類實(shí)例的作用域規(guī)則和命名空間 210
15.12 析構(gòu)函數(shù)和內(nèi)存管理 214
15.13 多重繼承 214
15.14 小結(jié) 216
第 16章 正則表達(dá)式 218
16.1 何為正則表達(dá)式 218
16.2 帶特殊字符的正則表達(dá)式 219
16.3 正則表達(dá)式和原始字符串 220
16.4 從字符串提取出匹配文本 221
16.5 用正則表達(dá)式替換文本 224
16.6 小結(jié) 226
第 17章 數(shù)據(jù)類型即對(duì)象 227
17.1 類型即對(duì)象 227
17.2 類型的使用 228
17.3 類型和用戶自定義類 228
17.4 鴨子類型 230
17.5 何為特殊方法屬性 231
17.6 讓對(duì)象像列表一樣工作 232
17.7 特殊方法屬性__getitem__ 232
17.7.1 工作原理 233
17.7.2 實(shí)現(xiàn)完整的列表功能 234
17.8 完整實(shí)現(xiàn)列表功能的對(duì)象 235
17.9 由內(nèi)置類型派生子類 237
17.9.1 由列表類型派生子類 237
17.9.2 由UserList派生子類 238
17.10 特殊方法屬性的適用場(chǎng)景 239
17.11 小結(jié) 239
第 18章 包 240
18.1 何為包 240
18.2 包的第 一個(gè)示例 240
18.3 包的實(shí)際例子 242
18.3.1 包內(nèi)的__init__.py文件 243
18.3.2 mathproj包的基本用法 243
18.3.3 子包和子模塊的加載 244
18.3.4 包內(nèi)的import語(yǔ)句 245
18.4 __all__屬性 246
18.5 包的合理使用 246
18.6 小結(jié) 247
第 19章 Python庫(kù)的使用 248
19.1 "功能齊備"的標(biāo)準(zhǔn)
庫(kù) 248
19.1.1 各種數(shù)據(jù)類型的
管理 248
19.1.2 文件和存儲(chǔ)操作 250
19.1.3 操作系統(tǒng)服務(wù)的訪問(wèn) 251
19.1.4 互聯(lián)網(wǎng)協(xié)議及其數(shù)據(jù)格式的使用 251
19.1.5 開(kāi)發(fā)調(diào)試工具及運(yùn)行時(shí)服務(wù) 252
19.2 標(biāo)準(zhǔn)庫(kù)之外的庫(kù) 253
19.3 添加其他Python庫(kù) 253
19.4 通過(guò)pip和venv安裝Python庫(kù) 253
19.4.1 帶--user標(biāo)志的安裝 254
19.4.2 虛擬環(huán)境 254
19.5 PyPI(即奶酪商店) 255
19.6 小結(jié) 255
第四部分 數(shù)據(jù)處理
第 20章 簡(jiǎn)單的文件問(wèn)題 259
20.1 問(wèn)題:沒(méi)完沒(méi)了的數(shù)據(jù)文件流 259
20.2 場(chǎng)景:無(wú)窮無(wú)盡的產(chǎn)品源數(shù)據(jù) 259
20.3 引入更多目錄結(jié)構(gòu) 261
20.4 節(jié)省存儲(chǔ)空間:壓縮和整理 263
20.4.1 文件壓縮 263
20.4.2 文件清理 264
20.5 小結(jié) 265
第 21章 數(shù)據(jù)文件的處理 266
21.1 ETL簡(jiǎn)介 266
21.2 文本文件的讀取 267
21.2.1 文本編碼:ASCII、
Unicode等 267
21.2.2 非結(jié)構(gòu)化文本 268
21.2.3 帶分隔符的普通文本文件 270
21.2.4 csv模塊 271
21.2.5 讀取csv文件并存為字典的列表 274
21.3 Excel文件 275
21.4 數(shù)據(jù)清洗 276
21.4.1 清洗 276
21.4.2 排序 277
21.4.3 數(shù)據(jù)清洗時(shí)的問(wèn)題和陷阱 278
21.5 數(shù)據(jù)文件的寫入 279
21.5.1 CSV和其他帶分隔符的文件 279
21.5.2 Excel文件的寫入 280
21.5.3 數(shù)據(jù)文件打包 280
21.6 小結(jié) 281
第 22章 網(wǎng)絡(luò)數(shù)據(jù) 282
22.1 獲取文件 282
22.1.1 用Python從FTP服務(wù)器獲取文件 283
22.1.2 通過(guò)SFTP協(xié)議獲取文件 284
22.1.3 通過(guò)HTTP/HTTPS協(xié)議獲取文件 284
22.2 通過(guò)API獲取數(shù)據(jù) 285
22.3 結(jié)構(gòu)化數(shù)據(jù)格式 287
22.3.1 JSON數(shù)據(jù) 287
22.3.2 XML數(shù)據(jù) 291
22.4 抓取Web數(shù)據(jù) 295
22.5 小結(jié) 299
第 23章 數(shù)據(jù)的保存 300
23.1 關(guān)系數(shù)據(jù)庫(kù) 300
23.2 SQLite:sqlite3數(shù)據(jù)庫(kù)的用法 301
23.3 MySQL、PostgreSQL和其他關(guān)系數(shù)據(jù)庫(kù)的使用 303
23.4 利用ORM簡(jiǎn)化數(shù)據(jù)庫(kù)操作 303
23.4.1 SQLAlchemy 304
23.4.2 用Alembic修改數(shù)據(jù)庫(kù)結(jié)構(gòu) 307
23.5 NoSQL數(shù)據(jù)庫(kù) 310
23.6 用Redis實(shí)現(xiàn)鍵/值存儲(chǔ) 310
23.7 MongoDB中的文檔 313
23.8 小結(jié) 315
第 24章 數(shù)據(jù)探索 316
24.1 Python的數(shù)據(jù)探索工具 316
24.1.1 Python用于數(shù)據(jù)探索的優(yōu)勢(shì) 316
24.1.2 Python能比電子表格做得更好 317
24.2 Jupyter記事本 317
24.2.1 啟動(dòng)內(nèi)核 318
24.2.2 執(zhí)行單元格中的代碼 318
24.3 Python和pandas 319
24.3.1 為什么要選用
pandas 319
24.3.2 pandas的安裝 320
24.3.3 Data Frame 320
24.4 數(shù)據(jù)清洗 322
24.4.1 用pandas加載并保存數(shù)據(jù) 322
24.4.2 用Data Frame進(jìn)行數(shù)據(jù)清洗 324
24.5 數(shù)據(jù)聚合和處理 326
24.5.1 Data Frame的合并 326
24.5.2 數(shù)據(jù)選取 327
24.5.3 分組與聚合 328
24.6 數(shù)據(jù)繪圖 329
24.7 不用pandas的理由 330
24.8 小結(jié) 331
第 25章 案例研究 332
25.1 數(shù)據(jù)的下載 332
25.2 解析inventory數(shù)據(jù) 335
25.3 根據(jù)經(jīng)緯度選擇一個(gè)觀測(cè)站 336
25.4 選擇觀測(cè)站并獲取其元數(shù)據(jù) 338
25.5 獲取并解析真實(shí)的天氣數(shù)據(jù) 341
25.5.1 獲取數(shù)據(jù) 341
25.5.2 解析天氣數(shù)據(jù) 341
25.6 將天氣數(shù)據(jù)存入數(shù)據(jù)庫(kù)(可選) 344
25.7 選取數(shù)據(jù)并作圖 345
25.8 用pandas對(duì)數(shù)據(jù)繪圖 346
附錄A Python文檔使用指南 347
習(xí)題答案(異步社區(qū)下載)