本書介紹Python 語言的基礎(chǔ)知識及其在各個(gè)領(lǐng)域的具體應(yīng)用,基于新版本3.x。書中首先介紹了Python 語言的一些基本知識,然后介紹了在商業(yè)、科研以及藝術(shù)領(lǐng)域使用Python 開發(fā)各種應(yīng)用的實(shí)例。文字簡潔明了,案例豐富實(shí)用,是一本難得的Python 入門手冊。
本書適合所有編程初學(xué)者閱讀。
本書內(nèi)容易于理解,而且讀起來生動(dòng)有趣,是編程和Python初學(xué)者不可多得的教程。書中首先介紹了Python的基礎(chǔ)知識,然后逐漸深入多種主題,結(jié)合教程和攻略式風(fēng)格來講解Python 3中的概念。每章結(jié)尾的練習(xí)可以幫助你鞏固所學(xué)的知識。 本書會為你學(xué)習(xí)Python打下堅(jiān)實(shí)的基礎(chǔ),包括測試、調(diào)試、代碼復(fù)用的實(shí)踐以及其他開發(fā)技巧。同時(shí)還會告訴你如何在商業(yè)、科學(xué)和藝術(shù)領(lǐng)域使用Python,并教會你使用多種Python工具和開源包。 通過閱讀本書,你將能夠: 學(xué)習(xí)簡單的數(shù)據(jù)類型,以及基本的數(shù)學(xué)和文本操作 學(xué)習(xí)用Python內(nèi)置的數(shù)據(jù)結(jié)構(gòu)來處理數(shù)據(jù) 掌握Python的代碼結(jié)構(gòu)和函數(shù)的用法 使用模塊和包編寫大規(guī)模Python程序 深入理解對象、類和其他面向?qū)ο筇匦浴 W(xué)習(xí)使用普通文件、關(guān)系數(shù)據(jù)庫和NoSQL數(shù)據(jù)庫來存儲數(shù)據(jù) 使用Python構(gòu)建Web客戶端、服務(wù)器、API和服務(wù) 管理系統(tǒng)任務(wù),比如程序、進(jìn)程和線程 理解并發(fā)和網(wǎng)絡(luò)編程的基礎(chǔ)知識
Bill Lubanovic現(xiàn)為Penguin Computing公司高級軟件工程師。1977年開始開發(fā)Unix軟件,1981年開始開發(fā)GUI軟件,1990年開始開發(fā)數(shù)據(jù)庫軟件,1993年開始開發(fā)Web軟件。與人合著有Linux System Administration。
前言 xiv
第1 章 Python 初探 1
1.1 真實(shí)世界中的Python 5
1.2 Python 與其他語言 5
1.3 為什么選擇Python 7
1.4 何時(shí)不應(yīng)該使用Python 8
1.5 Python 2 與Python 3 8
1.6 安裝Python 9
1.7 運(yùn)行Python 9
1.7.1 使用交互式解釋器 9
1.7.2 使用Python 文件 10
1.7.3 下一步 11
1.8 禪定一刻 11
1.9 練習(xí) 11
第2 章 Python 基本元素:數(shù)字、字符串和變量 13
2.1 變量、名字和對象 13
2.2 數(shù)字 16
2.2.1 整數(shù) 17
2.2.2 優(yōu)先級 20
2.2.3 基數(shù) 21
2.2.4 類型轉(zhuǎn)換 22
2.2.5 一個(gè)int 型有多大 23
2.2.6 浮點(diǎn)數(shù) 24
2.2.7 數(shù)學(xué)函數(shù) 24
2.3 字符串 24
2.3.1 使用引號創(chuàng)建 25
2.3.2 使用str() 進(jìn)行類型轉(zhuǎn)換 27
2.3.3 使用\ 轉(zhuǎn)義 27
2.3.4 使用+ 拼接 28
2.3.5 使用* 復(fù)制 28
2.3.6 使用[] 提取字符 28
2.3.7 使用[start:end:step] 分片 29
2.3.8 使用len() 獲得長度 31
2.3.9 使用split() 分割 32
2.3.10 使用join() 合并 32
2.3.11 熟悉字符串 32
2.3.12 大小寫與對齊方式 33
2.3.13 使用replace() 替換 34
2.3.14 更多關(guān)于字符串的內(nèi)容 35
2.4 練習(xí) 35
第3 章 Python 容器:列表、元組、字典與集合 36
3.1 列表和元組 36
3.2 列表 37
3.2.1 使用[] 或list() 創(chuàng)建列表 37
3.2.2 使用list() 將其他數(shù)據(jù)類型轉(zhuǎn)換成列表 37
3.2.3 使用[offset] 獲取元素 38
3.2.4 包含列表的列表 39
3.2.5 使用[offset] 修改元素 39
3.2.6 指定范圍并使用切片提取元素 40
3.2.7 使用append() 添加元素至尾部 40
3.2.8 使用extend() 或+= 合并列表 40
3.2.9 使用insert() 在指定位置插入元素 41
3.2.10 使用del 刪除指定位置的元素 41
3.2.11 使用remove() 刪除具有指定值的元素 42
3.2.12 使用pop() 獲取并刪除指定位置的元素 42
3.2.13 使用index() 查詢具有特定值的元素位置 42
3.2.14 使用in 判斷值是否存在 42
3.2.15 使用count() 記錄特定值出現(xiàn)的次數(shù) 43
3.2.16 使用join() 轉(zhuǎn)換為字符串 43
3.2.17 使用sort() 重新排列元素 44
3.2.18 使用len() 獲取長度 44
3.2.19 使用= 賦值,使用copy() 復(fù)制 45
3.3 元組 46
3.3.1 使用() 創(chuàng)建元組 46
3.3.2 元組與列表 47
3.4 字典 47
3.4.1 使用{} 創(chuàng)建字典 48
3.4.2 使用dict() 轉(zhuǎn)換為字典 48
3.4.3 使用[key] 添加或修改元素 49
3.4.4 使用update() 合并字典 50
3.4.5 使用del 刪除具有指定鍵的元素 51
3.4.6 使用clear() 刪除所有元素 51
3.4.7 使用in 判斷是否存在 51
3.4.8 使用[key] 獲取元素 52
3.4.9 使用keys() 獲取所有鍵 52
3.4.10 使用values() 獲取所有值 53
3.4.11 使用items() 獲取所有鍵值對 53
3.4.12 使用= 賦值,使用copy() 復(fù)制 53
3.5 集合 53
3.5.1 使用set() 創(chuàng)建集合 54
3.5.2 使用set() 將其他類型轉(zhuǎn)換為集合 54
3.5.3 使用in 測試值是否存在 55
3.5.4 合并及運(yùn)算符 56
3.6 比較幾種數(shù)據(jù)結(jié)構(gòu) 58
3.7 建立大型數(shù)據(jù)結(jié)構(gòu) 59
3.8 練習(xí) 60
第4 章 Python 外殼:代碼結(jié)構(gòu) 61
4.1 使用# 注釋 61
4.2 使用\ 連接 62
4.3 使用if、elif 和else 進(jìn)行比較 63
4.4 使用while 進(jìn)行循環(huán) 66
4.4.1 使用break 跳出循環(huán) 66
4.4.2 使用continue 跳到循環(huán)開始 67
4.4.3 循環(huán)外使用else 67
4.5 使用for 迭代 68
4.5.1 使用break 跳出循環(huán) 69
4.5.2 使用continue 跳到循環(huán)開始 69
4.5.3 循環(huán)外使用else 69
4.5.4 使用zip() 并行迭代 70
4.5.5 使用range() 生成自然數(shù)序列 71
4.5.6 其他迭代方式 71
4.6 推導(dǎo)式 72
4.6.1 列表推導(dǎo)式 72
4.6.2 字典推導(dǎo)式 74
4.6.3 集合推導(dǎo)式 74
4.6.4 生成器推導(dǎo)式 74
4.7 函數(shù) 75
4.7.1 位置參數(shù) 79
4.7.2 關(guān)鍵字參數(shù) 79
4.7.3 指定默認(rèn)參數(shù)值 79
4.7.4 使用* 收集位置參數(shù) 80
4.7.5 使用** 收集關(guān)鍵字參數(shù) 81
4.7.6 文檔字符串 82
4.7.7 一等公民:函數(shù) 82
4.7.8 內(nèi)部函數(shù) 84
4.7.9 閉包 84
4.7.10 匿名函數(shù):lambda() 函數(shù) 85
4.8 生成器 86
4.9 裝飾器 87
4.10 命名空間和作用域 89
4.11 使用try 和except 處理錯(cuò)誤 91
4.12 編寫自己的異常 93
4.13 練習(xí) 94
第5 章 Python 盒子:模塊、包和程序 95
5.1 獨(dú)立的程序 95
5.2 命令行參數(shù) 96
5.3 模塊和import 語句 96
5.3.1 導(dǎo)入模塊 96
5.3.2 使用別名導(dǎo)入模塊 98
5.3.3 導(dǎo)入模塊的一部分 98
5.3.4 模塊搜索路徑 98
5.4 包 99
5.5 Python 標(biāo)準(zhǔn)庫 99
5.5.1 使用setdefault() 和defaultdict() 處理缺失的鍵 100
5.5.2 使用Counter() 計(jì)數(shù) 101
5.5.3 使用有序字典OrderedDict() 按鍵排序 103
5.5.4 雙端隊(duì)列:棧+ 隊(duì)列 103
5.5.5 使用itertools 迭代代碼結(jié)構(gòu) 104
5.5.6 使用pprint() 友好輸出 105
5.6 獲取更多Python 代碼 105
5.7 練習(xí) 106
第6 章 對象和類 107
6.1 什么是對象 107
6.2 使用class 定義類 108
6.3 繼承 109
6.4 覆蓋方法 111
6.5 添加新方法 112
6.6 使用super 從父類得到幫助 112
6.7 self 的自辯 113
6.8 使用屬性對特性進(jìn)行訪問和設(shè)置 114
6.9 使用名稱重整保護(hù)私有特性 117
6.10 方法的類型 118
6.11 鴨子類型 119
6.12 特殊方法 120
6.13 組合 123
6.14 何時(shí)使用類和對象而不是模塊 124
6.15 練習(xí) 126
第7 章 像高手一樣玩轉(zhuǎn)數(shù)據(jù) 127
7.1 文本字符串 127
7.1.1 Unicode 127
7.1.2 格式化 134
7.1.3 使用正則表達(dá)式匹配 137
7.2 二進(jìn)制數(shù)據(jù) 144
7.2.1 字節(jié)和字節(jié)數(shù)組 144
7.2.2 使用struct 轉(zhuǎn)換二進(jìn)制數(shù)據(jù) 145
7.2.3 其他二進(jìn)制數(shù)據(jù)工具 148
7.2.4 使用binascii() 轉(zhuǎn)換字節(jié)/ 字符串 149
7.2.5 位運(yùn)算符 149
7.3 練習(xí) 149
第8 章 數(shù)據(jù)的歸宿 152
8.1 文件輸入/ 輸出 152
8.1.1 使用write() 寫文本文件 153
8.1.2 使用read()、readline() 或者readlines() 讀文本文件 154
8.1.3 使用write() 寫二進(jìn)制文件 156
8.1.4 使用read() 讀二進(jìn)制文件 157
8.1.5 使用with 自動(dòng)關(guān)閉文件 157
8.1.6 使用seek() 改變位置 157
8.2 結(jié)構(gòu)化的文本文件 159
8.2.1 CSV 159
8.2.2 XML 161
8.2.3 HTML 163
8.2.4 JSON 163
8.2.5 YAML 165
8.2.6 安全提示 166
8.2.7 配置文件 167
8.2.8 其他交換格式 168
8.2.9 使用pickle 序列化 168
8.3 結(jié)構(gòu)化二進(jìn)制文件 169
8.3.1 電子數(shù)據(jù)表 169
8.3.2 層次數(shù)據(jù)格式 169
8.4 關(guān)系型數(shù)據(jù)庫 170
8.4.1 SQL 170
8.4.2 DB-API 172
8.4.3 SQLite 172
8.4.4 MySQL 174
8.4.5 PostgreSQL 174
8.4.6 SQLAlchemy 174
8.5 NoSQL 數(shù)據(jù)存儲 179
8.5.1 dbm family 180
8.5.2 memcached 180
8.5.3 Redis 181
8.5.4 其他的NoSQL 189
8.6 全文數(shù)據(jù)庫 189
8.7 練習(xí) 190
第9 章 剖析Web 191
9.1 Web 客戶端 192
9.1.1 使用telnet 進(jìn)行測試 193
9.1.2 Python 的標(biāo)準(zhǔn)Web 庫 194
9.1.3 拋開標(biāo)準(zhǔn)庫:requests 195
9.2 Web 服務(wù)端 196
9.2.1 *簡單的Python Web 服務(wù)器 196
9.2.2 Web 服務(wù)器網(wǎng)關(guān)接口 198
9.2.3 框架 198
9.2.4 Bottle 198
9.2.5 Flask 201
9.2.6 非Python 的Web 服務(wù)器 204
9.2.7 其他框架 206
9.3 Web 服務(wù)和自動(dòng)化 207
9.3.1 webbrowser 模塊 207
9.3.2 Web API 和表述性狀態(tài)傳遞 208
9.3.3 JSON 209
9.3.4 抓取數(shù)據(jù) 209
9.3.5 用BeautifulSoup 來抓取HTML 209
9.4 練習(xí) 210
第10 章 系統(tǒng) 212
10.1 文件 212
10.1.1 用open() 創(chuàng)建文件 212
10.1.2 用exists() 檢查文件是否存在 213
10.1.3 用isfile() 檢查是否為文件 213
10.1.4 用copy() 復(fù)制文件 213
10.1.5 用rename() 重命名文件 214
10.1.6 用link() 或者symlink() 創(chuàng)建鏈接 214
10.1.7 用chmod() 修改權(quán)限 214
10.1.8 用chown() 修改所有者 214
10.1.9 用abspath() 獲取路徑名 215
10.1.10 用realpath() 獲取符號的路徑名 215
10.1.11 用remove() 刪除文件 215
10.2 目錄 215
10.2.1 使用mkdir() 創(chuàng)建目錄 215
10.2.2 使用rmdir() 刪除目錄 215
10.2.3 使用listdir() 列出目錄內(nèi)容 216
10.2.4 使用chdir() 修改當(dāng)前目錄 216
10.2.5 使用glob() 列出匹配文件 216
10.3 程序和進(jìn)程 217
10.3.1 使用subprocess 創(chuàng)建進(jìn)程 218
10.3.2 使用multiprocessing 創(chuàng)建進(jìn)程 219
10.3.3 使用terminate() 終止進(jìn)程 219
10.4 日期和時(shí)間 220
10.4.1 datetime 模塊 221
10.4.2 使用time 模塊 223
10.4.3 讀寫日期和時(shí)間 225
10.4.4 其他模塊 227
10.5 練習(xí) 228
第11 章 并發(fā)和網(wǎng)絡(luò) 229
11.1 并發(fā) 230
11.1.1 隊(duì)列 231
11.1.2 進(jìn)程 231
11.1.3 線程 232
11.1.4 綠色線程和gevent 234
11.1.5 twisted 236
11.1.6 asyncio 238
11.1.7 Redis 238
11.1.8 隊(duì)列之上 241
11.2 網(wǎng)絡(luò) 241
11.2.1 模式 242
11.2.2 發(fā)布- 訂閱模型 242
11.2.3 TCP/IP 245
11.2.4 套接字 246
11.2.5 ZeroMQ 250
11.2.6 scapy 253
11.2.7 網(wǎng)絡(luò)服務(wù) 253
11.2.8 Web 服務(wù)和API 255
11.2.9 遠(yuǎn)程處理 256
11.2.10 大數(shù)據(jù)和MapReduce 260
11.2.11 在云上工作 261
11.3 練習(xí) 264
第12 章 成為真正的Python 開發(fā)者 265
12.1 關(guān)于編程 265
12.2 尋找Python 代碼 265
12.3 安裝包 266
12.3.1 使用pip 266
12.3.2 使用包管理工具 267
12.3.3 從源代碼安裝 267
12.4 集成開發(fā)環(huán)境 268
12.4.1 IDLE 268
12.4.2 PyCharm 268
12.4.3 IPython 269
12.5 命名和文檔 269
12.6 測試代碼 270
12.6.1 使用pylint、pyflakes 和pep8 檢查代碼 270
12.6.2 使用unittest 進(jìn)行測試 272
12.6.3 使用doctest 進(jìn)行測試 276
12.6.4 使用nose 進(jìn)行測試 277
12.6.5 其他測試框架 278
12.6.6 持續(xù)集成 278
12.7 調(diào)試Python 代碼 278
12.8 使用pdb 進(jìn)行調(diào)試 279
12.9 記錄錯(cuò)誤日志 284
12.10 優(yōu)化代碼 286
12.10.1 測量時(shí)間 286
12.10.2 算法和數(shù)據(jù)結(jié)構(gòu) 288
12.10.3 Cython、NumPy 和C 擴(kuò)展 289
12.10.4 PyPy 289
12.11 源碼控制 289
12.11.1 Mercurial 290
12.11.2 Git 290
12.12 復(fù)制本書代碼 292
12.13 更多內(nèi)容 293
12.13.1 書 293
12.13.2 網(wǎng)站 293
12.13.3 社區(qū) 293
12.13.4 大會 294
12.14 后續(xù)內(nèi)容 294
附錄A Python 的藝術(shù) 295
附錄B 工作中的Python 307
附錄C Python 的科學(xué) 320
附錄D 安裝Python 3 339
附錄E 習(xí)題解答 349
附錄F 速查表 380
作者介紹 383
封面介紹 383