前言xiv
第1章 Python初探1
1.1真實世界中的Python5
1.2Python與其他語言5
1.3為什麼選擇Python7
1.4何時不應該使用Python8
1.5Python 2與Python 38
1.6安裝Python9
1.7運行Python9
1.7.1使用交互式解釋器9
1.7.2使用Python文件10
1.7.3下一步11
1.8禪定一刻11
1.9練習11
第2章 Python基本元素:數字、字符串和變量13
2.1變量、名字和對象13
2.2數字16
2.2.1整數17
2.2.2優先級20
2.2.3基數21
2.2.4類型轉換22
2.2.5一個int型有多大23
2.2.6浮點數24
2.2.7數學函數24
2.3字符串24
2.3.1使用引號創建25
2.3.2使用str()進行類型轉換27
2.3.3使用\轉義27
2.3.4使用+拼接28
2.3.5使用*復制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更多關於字符串的內容35
2.4練習35
第3章 Python容器:列表、元組、字典與集合36
3.1列表和元組36
3.2列表37
3.2.1使用()或list()創建列表37
3.2.2使用list()將其他數據類型轉換成列表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()記錄特定值出現的次數43
3.2.16使用join()轉換為字符串43
3.2.17使用sort()重新排列元素44
3.2.18使用len()獲取長度44
3.2.19使用=賦值,使用copy()復制45
3.3元組46
3.3.1使用()創建元組46
3.3.2元組與列表47
3.4字典47
3.4.1使用{}創建字典48
3.4.2使用dict()轉換為字典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()復制53
3.5集合53
3.5.1使用set()創建集合54
3.5.2使用set()將其他類型轉換為集合54
3.5.3使用in測試值是否存在55
3.5.4合並及運算符56
3.6比較幾種數據結構58
3.7建立大型數據結構59
3.8練習60
第4章 Python外殼:代碼結構61
4.1使用#注釋61
4.2使用\連接62
4.3使用if、elif和else進行比較63
4.4使用while進行循環66
4.4.1使用break跳出循環66
4.4.2使用continue跳到循環開始67
4.4.3循環外使用else67
4.5使用for迭代68
4.5.1使用break跳出循環69
4.5.2使用continue跳到循環開始69
4.5.3循環外使用else69
4.5.4使用zip()並行迭代70
4.5.5使用range()生成自然數序列71
4.5.6其他迭代方式71
4.6推導式72
4.6.1列表推導式72
4.6.2字典推導式74
4.6.3集合推導式74
4.6.4生成器推導式74
4.7函數75
4.7.1位置參數79
4.7.2關鍵字參數79
4.7.3指定默認參數值79
4.7.4使用*收集位置參數80
4.7.5使用**收集關鍵字參數81
4.7.6文檔字符串82
4.7.7一等公民:函數82
4.7.8內部函數84
4.7.9閉包84
4.7.10匿名函數:lambda()函數85
4.8生成器86
4.9裝飾器87
4.10命名空間和作用域89
4.11使用try和except處理錯誤91
4.12編寫自己的異常93
4.13練習94
第5章 Python盒子:模塊、包和程序95
5.1獨立的程序95
5.2命令行參數96
5.3模塊和import語句96
5.3.1導入模塊96
5.3.2使用別名導入模塊98
5.3.3導入模塊的一部分98
5.3.4模塊搜索路徑98
5.4包99
5.5Python標准庫99
5.5.1使用setdefault()和defaultdict()處理缺失的鍵100
5.5.2使用Counter()計數101
5.5.3使用有序字典OrderedDict()按鍵排序103
5.5.4雙端隊列:棧+隊列103
5.5.5使用itertools迭代代碼結構104
5.5.6使用pprint()友好輸出105
5.6獲取更多Python代碼105
5.7練習106
第6章 對象和類107
6.1什麼是對象107
6.2使用class定義類108
6.3繼承109
6.4覆蓋方法111
6.5添加新方法112
6.6使用super從父類得到幫助112
6.7self的自辯113
6.8使用屬性對特性進行訪問和設置114
6.9使用名稱重整保護私有特性117
6.10方法的類型118
6.11鴨子類型119
6.12特殊方法120
6.13組合123
6.14何時使用類和對象而不是模塊124
6.15練習126
第7章 像高手一樣玩轉數據127
7.1文本字符串127
7.1.1Unicode127
7.1.2格式化134
7.1.3使用正則表達式匹配137
7.2二進制數據144
7.2.1字節和字節數組144
7.2.2使用struct轉換二進制數據145
7.2.3其他二進制數據工具148
7.2.4使用binascii()轉換字節/字符串149
7.2.5位運算符149
7.3練習149
第8章 數據的歸宿152
8.1文件輸入/輸出152
8.1.1使用write()寫文本文件153
8.1.2使用read()、readline()或者readlines()讀文本文件154
8.1.3使用write()寫二進制文件156
8.1.4使用read()讀二進制文件157
8.1.5使用with自動關閉文件157
8.1.6使用seek()改變位置157
8.2結構化的文本文件159
8.2.1CSV159
8.2.2XML161
8.2.3HTML163
8.2.4JSON163
8.2.5YAML165
8.2.6安全提示166
8.2.7配置文件167
8.2.8其他交換格式168
8.2.9使用pickle序列化168
8.3結構化二進制文件169
8.3.1電子數據表169
8.3.2層次數據格式169
8.4關系型數據庫170
8.4.1SQL170
8.4.2DB—API172
8.4.3SQLite172
8.4.4MySQL174
8.4.5PostgreSQL174
8.4.6SQLAlchemy174
8.5NoSQL數據存儲179
8.5.1dbm family180
8.5.2memcached180
8.5.3Redis181
8.5.4其他的NoSQL189
8.6全文數據庫189
8.7練習190
第9章 剖析Web191
9.1Web客戶端192
9.1.1使用telnet進行測試193
9.1.2Python的標准Web庫194
9.1.3拋開標准庫:requests195
9.2Web服務端196
9.2.1最簡單的Python Web服務器196
9.2.2Web服務器網關接口198
9.2.3框架198
9.2.4Bottle198
9.2.5Flask201
9.2.6非Python的Web服務器204
9.2.7其他框架206
9.3Web服務和自動化207
9.3.1webbrowser模塊207
9.3.2Web API和表述性狀態傳遞208
9.3.3JSON209
9.3.4抓取數據209
9.3.5用BeautifulSoup來抓取HTML209
9.4練習210
第10章 系統212
10.1文件212
10.1.1用open()創建文件212
10.1.2用exists()檢查文件是否存在213
10.1.3用isfile()檢查是否為文件213
10.1.4用copy()復制文件213
10.1.5用rename()重命名文件214
10.1.6用link()或者symlink()創建鏈接214
10.1.7用chmod()修改權限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()創建目錄215
10.2.2使用rmdir()刪除目錄215
10.2.3使用listdir()列出目錄內容216
10.2.4使用chdir()修改當前目錄216
10.2.5使用glob()列出匹配文件216
10.3程序和進程217
10.3.1使用subprocess創建進程218
10.3.2使用multiprocessing創建進程219
10.3.3使用terminate()終止進程219
10.4日期和時間220
10.4.1datetime模塊221
10.4.2使用time模塊223
10.4.3讀寫日期和時間225
10.4.4其他模塊227
10.5練習228
第11章 並發和網絡229
11.1並發230
11.1.1隊列231
11.1.2進程231
11.1.3線程232
11.1.4綠色線程和gevent234
11.1.5twisted236
11.1.6asyncio238
11.1.7Redis238
11.1.8隊列之上241
11.2網絡241
11.2.1模式242
11.2.2發布—訂閱模型242
11.2.3TCP/IP245
11.2.4套接字246
11.2.5ZeroMQ250
11.2.6scapy253
11.2.7網絡服務253
11.2.8Web服務和API255
11.2.9遠程處理256
11.2.10大數據和MapReduce260
11.2.11在雲上工作261
11.3練習264
第12章 成為真正的Python開發者265
12.1關於編程265
12.2尋找Python代碼265
12.3安裝包266
12.3.1使用pip266
12.3.2使用包管理工具267
12.3.3從源代碼安裝267
12.4集成開發環境268
12.4.1IDLE268
12.4.2PyCharm268
12.4.3IPython269
12.5命名和文檔269
12.6測試代碼270
12.6.1使用pylint、pyflakes和pep8檢查代碼270
12.6.2使用unittest進行測試272
12.6.3使用doctest進行測試276
12.6.4使用nose進行測試277
12.6.5其他測試框架278
12.6.6持續集成278
12.7調試Python代碼278
12.8使用pdb進行調試279
12.9記錄錯誤日志284
12.10優化代碼286
12.10.1測量時間286
12.10.2算法和數據結構288
12.10.3Cython、NumPy和C擴展289
12.10.4PyPy289
12.11源碼控制289
12.11.1Mercurial290
12.11.2Git290
12.12復制本書代碼292
12.13更多內容293
12.13.1書293
12.13.2網站293
12.13.3社區293
12.13.4大會294
12.14后續內容294
附錄A Python的藝術295
附錄B 工作中的Python307
附錄C Python的科學320
附錄D 安裝Python 3339
附錄E 習題解答349
附錄F 速查表380
作者介紹383
封面介紹383