《Python基礎(chǔ)教程 第3版》包括Python程序設(shè)計(jì)的方方面面:首先,從Python的安裝開(kāi)始,隨后介紹了Python的基礎(chǔ)知識(shí)和基本概念,包括列表、元組、字符串、字典以及各種語(yǔ)句;然后循序漸進(jìn)地介紹了一些相對(duì)高-級(jí)的主題,包括抽象、異常、魔法方法、屬性、迭代器;此后探討了如何將Python與數(shù)據(jù)庫(kù)、網(wǎng)絡(luò)、C語(yǔ)言等工具結(jié)合使用,從而發(fā)揮出Python的強(qiáng)大功能,同時(shí)介紹了Python程序測(cè)試、打包、發(fā)布等知識(shí);作者結(jié)合前面講述的內(nèi)容,按照實(shí)際項(xiàng)目開(kāi)發(fā)的步驟向讀者介紹了10個(gè)具有實(shí)際意義的Python項(xiàng)目的開(kāi)發(fā)過(guò)程。
本書(shū)內(nèi)容涉及的范圍較廣,既能為初學(xué)者夯實(shí)基礎(chǔ),又能幫助程序員提升技能,適合各個(gè)層次的Python開(kāi)發(fā)人員閱讀參考。
本書(shū)是經(jīng)典的Python入門(mén)教程,層次鮮明、結(jié)構(gòu)嚴(yán)謹(jǐn)、內(nèi)容翔實(shí),特別是后面幾章,作者將前面講述的內(nèi)容應(yīng)用到10個(gè)引人入勝的項(xiàng)目中,并以模板的形式介紹了項(xiàng)目的開(kāi)發(fā)過(guò)程,手把手教授Python編程實(shí)踐,讓讀者從項(xiàng)目中領(lǐng)略Python的真正魅力。
本書(shū)既適合初學(xué)者夯實(shí)基礎(chǔ),又能幫助Python程序員提升技能,即使是中高-級(jí)Python程序員,也能從書(shū)里找到耳目一新的內(nèi)容。
Magnus Lie Hetland
挪威科技大學(xué)副教授,教授算法;黑客,喜歡鉆研新銳編程語(yǔ)言,是Python語(yǔ)言的堅(jiān)定支持者。寫(xiě)過(guò)很多Python方面的書(shū)和在線教程,比如深受讀者歡迎的網(wǎng)上教程“Instant Python”。表演專(zhuān)業(yè)的業(yè)余愛(ài)好者,從1985年登臺(tái)到今,已經(jīng)參演數(shù)十部話劇。
第 1章 快速上手:基礎(chǔ)知識(shí) 1
1.1 交互式解釋器 1
1.2 算法是什么 2
1.3 數(shù)和表達(dá)式 3
1.4 變量 5
1.5 語(yǔ)句 5
1.6 獲取用戶輸入 7
1.7 函數(shù) 8
1.8 模塊 8
1.8.1 cmath和復(fù)數(shù) 9
1.8.2 回到未來(lái) 10
1.9 保存并執(zhí)行程序 10
1.9.1 從命令提示符運(yùn)行Python腳本 12
1.9.2 讓腳本像普通程序一樣 12
1.9.3 注釋 13
1.10 字符串 13
1.10.1 單引號(hào)字符串以及對(duì)引號(hào)轉(zhuǎn)義 14
1.10.2 拼接字符串 15
1.10.3 字符串表示str和repr 15
1.10.4 長(zhǎng)字符串、原始字符串和字節(jié) 16
1.11 小結(jié) 21
1.11.1 本章介紹的新函數(shù) 21
1.11.2 預(yù)告 22
第 2章 列表和元組 23
2.1 序列概述 23
2.2 通用的序列操作 24
2.2.1 索引 24
2.2.2 切片 26
2.2.3 序列相加 28
2.2.4 乘法 28
2.2.5 成員資格 29
2.3 列表:Python的主力 31
2.3.1 函數(shù)list 31
2.3.2 基本的列表操作 31
2.3.3 列表方法 33
2.4 元組:不可修改的序列 38
2.5 小結(jié) 39
2.5.1 本章介紹的新函數(shù) 40
2.5.2 預(yù)告 40
第3章 使用字符串 41
3.1 字符串基本操作 41
3.2 設(shè)置字符串的格式:精簡(jiǎn)版 41
3.3 設(shè)置字符串的格式:完整版 43
3.3.1 替換字段名 43
3.3.2 基本轉(zhuǎn)換 44
3.3.3 寬度、精度和千位分隔符 45
3.3.4 符號(hào)、對(duì)齊和用0填充 46
3.4 字符串方法 48
3.4.1 center 48
3.4.2 find 48
3.4.3 join 49
3.4.4 lower 50
3.4.5 replace 51
3.4.6 split 51
3.4.7 strip 51
3.4.8 translate 52
3.4.9 判斷字符串是否滿足特定的條件 52
3.5 小結(jié) 53
3.5.1 本章介紹的新函數(shù) 53
3.5.2 預(yù)告 53
第4章 當(dāng)索引行不通時(shí) 54
4.1 字典的用途 54
4.2 創(chuàng)建和使用字典 55
4.2.1 函數(shù)dict 55
4.2.2 基本的字典操作 55
4.2.3 將字符串格式設(shè)置功能用于字典 57
4.2.4 字典方法 58
4.3 小結(jié) 63
4.3.1 本章介紹的新函數(shù) 63
4.3.2 預(yù)告 63
第5章 條件、循環(huán)及其他語(yǔ)句 64
5.1 再談print和import 64
5.1.1 打印多個(gè)參數(shù) 64
5.1.2 導(dǎo)入時(shí)重命名 65
5.2 賦值魔法 66
5.2.1 序列解包 66
5.2.2 鏈?zhǔn)劫x值 67
5.2.3 增強(qiáng)賦值 67
5.3 代碼塊:縮進(jìn)的樂(lè)趣 68
5.4 條件和條件語(yǔ)句 69
5.4.1 這正是布爾值的用武之地 69
5.4.2 有條件地執(zhí)行和if語(yǔ)句 70
5.4.3 else子句 70
5.4.4 elif子句 71
5.4.5 代碼塊嵌套 71
5.4.6 更復(fù)雜的條件 71
5.4.7 斷言 75
5.5 循環(huán) 76
5.5.1 while循環(huán) 77
5.5.2 for循環(huán) 77
5.5.3 迭代字典 78
5.5.4 一些迭代工具 78
5.5.5 跳出循環(huán) 80
5.5.6 循環(huán)中的else子句 82
5.6 簡(jiǎn)單推導(dǎo) 83
5.7 三人行 84
5.7.1 什么都不做 84
5.7.2 使用del刪除 85
5.7.3 使用exec和eval執(zhí)行字符串及計(jì)算其結(jié)果 86
5.8 小結(jié) 88
5.8.1 本章介紹的新函數(shù) 89
5.8.2 預(yù)告 89
第6章 抽象 90
6.1 懶惰是一種美德 90
6.2 抽象和結(jié)構(gòu) 91
6.3 自定義函數(shù) 91
6.3.1 給函數(shù)編寫(xiě)文檔 92
6.3.2 其實(shí)并不是函數(shù)的函數(shù) 93
6.4 參數(shù)魔法 93
6.4.1 值從哪里來(lái) 94
6.4.2 我能修改參數(shù)嗎 94
6.4.3 關(guān)鍵字參數(shù)和默認(rèn)值 98
6.4.4 收集參數(shù) 100
6.4.5 分配參數(shù) 102
6.4.6 練習(xí)使用參數(shù) 103
6.5 作用域 105
6.6 遞歸 107
6.6.1 兩個(gè)經(jīng)典案例:階乘和冪 108
6.6.2 另一個(gè)經(jīng)典案例:二分查找 109
6.7 小結(jié) 112
6.7.1 本章介紹的新函數(shù) 113
6.7.2 預(yù)告 113
第7章 再談抽象 114
7.1 對(duì)象魔法 114
7.1.1 多態(tài) 115
7.1.2 多態(tài)和方法 116
7.1.3 封裝 118
7.1.4 繼承 119
7.2 類(lèi) 119
7.2.1 類(lèi)到底是什么 119
7.2.2 創(chuàng)建自定義類(lèi) 120
7.2.3 屬性、函數(shù)和方法 121
7.2.4 再談隱藏 122
7.2.5 類(lèi)的命名空間 123
7.2.6 特定超類(lèi) 124
7.2.7 深入探討繼承 125
7.2.8 多個(gè)超類(lèi) 126
7.2.9 接口和內(nèi)省 127
7.2.10 抽象基類(lèi) 128
7.3 關(guān)于面向?qū)ο笤O(shè)計(jì)的一些思考 130
7.4 小結(jié) 130
7.4.1 本章介紹的新函數(shù) 131
7.4.2 預(yù)告 131
第8章 異常 132
8.1 異常是什么 132
8.2 讓事情沿你特定的軌道出錯(cuò) 132
8.2.1 raise語(yǔ)句 132
8.2.2 自定義的異常類(lèi) 133
8.3 捕獲異常 134
8.3.1 不用提供參數(shù) 134
8.3.2 多個(gè)except子句 136
8.3.3 一箭雙雕 136
8.3.4 捕獲對(duì)象 137
8.3.5 一網(wǎng)打盡 137
8.3.6 萬(wàn)事大吉時(shí) 138
8.4 異常和函數(shù) 140
8.5 異常之禪 140
8.6 不那么異常的情況 142
8.7 小結(jié) 143
8.7.1 本章介紹的新函數(shù) 143
8.7.2 預(yù)告 143
第9章 魔法方法、特性和迭代器 144
9.1 如果你使用的不是Python 3 144
9.2 構(gòu)造函數(shù) 145
9.2.1 重寫(xiě)普通方法和特殊的構(gòu)造函數(shù) 146
9.2.2 調(diào)用未關(guān)聯(lián)的超類(lèi)構(gòu)造函數(shù) 147
9.2.3 使用函數(shù)super 148
9.3 元素訪問(wèn) 149
9.3.1 基本的序列和映射協(xié)議 150
9.3.2 從list、dict和str派生 152
9.4 其他魔法方法 153
9.5 特性 153
9.5.1 函數(shù)property 154
9.5.2 靜態(tài)方法和類(lèi)方法 155
9.5.3 __getattr__、__setattr__等方法 156
9.6 迭代器 157
9.6.1 迭代器協(xié)議 157
9.6.2 從迭代器創(chuàng)建序列 159
9.7 生成器 159
9.7.1 創(chuàng)建生成器 159
9.7.2 遞歸式生成器 161
9.7.3 通用生成器 162
9.7.4 生成器的方法 162
9.7.5 模擬生成器 163
9.8 八皇后問(wèn)題 164
9.8.1 生成器的回溯 164
9.8.2 問(wèn)題 165
9.8.3 狀態(tài)表示 166
9.8.4 檢測(cè)沖突 166
9.8.5 基線條件 166
9.8.6 遞歸條件 167
9.8.7 掃尾工作 169
9.9 小結(jié) 170
9.9.1 本章介紹的新函數(shù) 170
9.9.2 預(yù)告 171
第 10章 開(kāi)箱即用 172
10.1 模塊 172
10.1.1 模塊是程序 172
10.1.2 模塊是用來(lái)下定義的 174
10.1.3 讓模塊可用 176
10.1.4 包 177
10.2 探索模塊 178
10.2.1 模塊包含什么 178
10.2.2 使用help獲取幫助 179
10.2.3 文檔 180
10.2.4 使用源代碼 181
10.3 標(biāo)準(zhǔn)庫(kù):一些深受歡迎的模塊 181
10.3.1 sys 181
10.3.2 os 183
10.3.3 fileinput 185
10.3.4 集合、堆和雙端隊(duì)列 186
10.3.5 time 190
10.3.6 random 192
10.3.7 shelve和json 195
10.3.8 re 198
10.3.9 其他有趣的標(biāo)準(zhǔn)模塊 210
10.4 小結(jié) 211
10.4.1 本章介紹的新函數(shù) 212
10.4.2 預(yù)告 212
第 11章 文件 213
11.1 打開(kāi)文件 213
11.2 文件的基本方法 214
11.2.1 讀取和寫(xiě)入 215
11.2.2 使用管道重定向輸出 215
11.2.3 讀取和寫(xiě)入行 217
11.2.4 關(guān)閉文件 217
11.2.5 使用文件的基本方法 218
11.3 迭代文件內(nèi)容 220
11.3.1 每次一個(gè)字符(或字節(jié)) 220
11.3.2 每次一行 221
11.3.3 讀取所有內(nèi)容 221
11.3.4 使用fileinput實(shí)現(xiàn)延遲行迭代 221
11.3.5 文件迭代器 222
11.4 小結(jié) 223
11.4.1 本章介紹的新函數(shù) 223
11.4.2 預(yù)告 224
第 12章 圖形用戶界面 225
12.1 創(chuàng)建GUI示例應(yīng)用程序 225
12.1.1 初探 226
12.1.2 布局 227
12.1.3 事件處理 228
12.2 使用其他GUI工具包 230
12.3 小結(jié) 231
第 13章 數(shù)據(jù)庫(kù)支持 232
13.1 Python數(shù)據(jù)庫(kù)API 232
13.1.1 全局變量 233
13.1.2 異常 234
13.1.3 連接和游標(biāo) 234
13.1.4 類(lèi)型 236
13.2 SQLite和PySQLite 236
13.2.1 起步 237
13.2.2 數(shù)據(jù)庫(kù)應(yīng)用程序示例 238
13.3 小結(jié) 241
13.3.1 本章介紹的新函數(shù) 241
13.3.2 預(yù)告 241
第 14章 網(wǎng)絡(luò)編程 242
14.1 幾個(gè)網(wǎng)絡(luò)模塊 242
14.1.1 模塊socket 242
14.1.2 模塊urllib和urllib2 244
14.1.3 其他模塊 246
14.2 SocketServer及相關(guān)的類(lèi) 247
14.3 多個(gè)連接 247
14.3.1 使用SocketServer實(shí)現(xiàn)分叉和線程化 249
14.3.2 使用select和poll實(shí)現(xiàn)異步I/O 249
14.4 Twisted 252
14.4.1 下載并安裝Twisted 252
14.4.2 編寫(xiě)Twisted服務(wù)器 253
14.5 小結(jié) 254
14.5.1 本章介紹的新函數(shù) 255
14.5.2 預(yù)告 255
第 15章 Python和Web 256
15.1 屏幕抓取 256
15.1.1 Tidy和XHTML解析 257
15.1.2 Beautiful Soup 261
15.2 使用CGI創(chuàng)建動(dòng)態(tài)網(wǎng)頁(yè) 262
15.2.1 第 一步:準(zhǔn)備Web服務(wù)器 262
15.2.2 第 二步:添加!#行 263
15.2.3 第三步:設(shè)置文件權(quán)限 264
15.2.4 CGI安全風(fēng)險(xiǎn) 264
15.2.5 簡(jiǎn)單的CGI腳本 264
15.2.6 使用cgitb進(jìn)行調(diào)試 265
15.2.7 使用模塊cgi 266
15.2.8 簡(jiǎn)單的表單 267
15.3 使用Web框架 269
15.4 Web服務(wù):更高-級(jí)的抓取 270
15.4.1 RSS和相關(guān)內(nèi)容 270
15.4.2 使用XML-RPC進(jìn)行遠(yuǎn)程過(guò)程調(diào)用 271
15.4.3 SOAP 272
15.5 小結(jié) 272
15.5.1 本章介紹的新函數(shù) 272
15.5.2 預(yù)告 272
第 16章 測(cè)試基礎(chǔ) 273
16.1 先測(cè)試再編碼 273
16.1.1 準(zhǔn)確的需求說(shuō)明 273
16.1.2 做好應(yīng)對(duì)變化的準(zhǔn)備 275
16.1.3 測(cè)試四步曲 275
16.2 測(cè)試工具 276
16.2.1 doctest 276
16.2.2 unittest 278
16.3 超越單元測(cè)試 280
16.3.1 使用PyChecker和PyLint檢查源代碼 280
16.3.2 性能分析 283
16.4 小結(jié) 284
16.4.1 本章介紹的新函數(shù) 285
16.4.2 預(yù)告 285
第 17章 擴(kuò)展Python 286
17.1 魚(yú)和熊掌兼得 286
17.2 簡(jiǎn)單易行的方式:Jython和IronPython 287
17.3 編寫(xiě)C語(yǔ)言擴(kuò)展 289
17.3.1 SWIG 291
17.3.2 手工編寫(xiě)擴(kuò)展 294
17.4 小結(jié) 298
17.4.1 本章介紹的新函數(shù) 299
17.4.2 預(yù)告 299
第 18章 程序打包 300
18.1 Setuptools基礎(chǔ) 300
18.2 打包 302
18.3 編譯擴(kuò)展 303
18.4 使用py2exe創(chuàng)建可執(zhí)行程序 304
18.5 小結(jié) 304
18.5.1 本章介紹的新函數(shù) 305
18.5.2 預(yù)告 305
第 19章 趣味編程 306
19.1 為何要有趣 306
19.2 編程柔術(shù) 306
19.3 原型設(shè)計(jì) 307
19.4 配置 308
19.4.1 提取常量 308
19.4.2 配置文件 309
19.5 日志 311
19.6 如果你已不勝其煩 312
19.7 如果你想深入學(xué)習(xí) 312
19.8 小結(jié) 313
第 20章 項(xiàng)目1:自動(dòng)添加標(biāo)簽 315
20.1 問(wèn)題描述 315
20.2 有用的工具 316
20.3 準(zhǔn)備工作 316
20.4 初次實(shí)現(xiàn) 317
20.4.1 找出文本塊 317
20.4.2 添加一些標(biāo)記 318
20.5 再次實(shí)現(xiàn) 319
20.5.1 處理程序 320
20.5.2 處理程序的超類(lèi) 320
20.5.3 規(guī)則 322
20.5.4 規(guī)則的超類(lèi) 323
20.5.5 過(guò)濾器 323
20.5.6 解析器 323
20.5.7 創(chuàng)建規(guī)則和過(guò)濾器 324
20.5.8 整合起來(lái) 327
20.6 進(jìn)一步探索 331
第 21章 項(xiàng)目2:繪制圖表 332
21.1 問(wèn)題描述 332
21.2 有用的工具 332
21.3 準(zhǔn)備工作 333
21.4 初次實(shí)現(xiàn) 333
21.4.1 使用ReportLab繪圖 334
21.4.2 繪制折線 335
21.4.3 編寫(xiě)原型 335
21.5 再次實(shí)現(xiàn) 337
21.5.1 獲取數(shù)據(jù) 337
21.5.2 使用LinePlot類(lèi) 337
21.6 進(jìn)一步探索 339
第 22章 項(xiàng)目3:萬(wàn)-能的XML 340
22.1 問(wèn)題描述 340
22.2 有用的工具 341
22.3 準(zhǔn)備工作 341
22.4 初次實(shí)現(xiàn) 343
22.4.1 創(chuàng)建簡(jiǎn)單的內(nèi)容處理程序 343
22.4.2 創(chuàng)建HTML頁(yè)面 345
22.5 再次實(shí)現(xiàn) 347
22.5.1 分派器混合類(lèi) 347
22.5.2 將首部和尾部寫(xiě)入文件的方法以及默認(rèn)處理程序 349
22.5.3 支持目錄 349
22.5.4 事件處理程序 350
22.6 進(jìn)一步探索 352
第 23章 項(xiàng)目4:新聞匯總 353
23.1 問(wèn)題描述 353
23.2 有用的工具 354
23.3 準(zhǔn)備工作 354
23.4 初次實(shí)現(xiàn) 354
23.5 再次實(shí)現(xiàn) 356
23.6 進(jìn)一步探索 362
第 24章 項(xiàng)目5:虛擬茶話會(huì) 364
24.1 問(wèn)題描述 364
24.2 有用的工具 364
24.3 準(zhǔn)備工作 365
24.4 初次實(shí)現(xiàn) 366
24.4.1 ChatServer類(lèi) 366
24.4.2 ChatSession類(lèi) 367
24.4.3 整合起來(lái) 369
24.5 再次實(shí)現(xiàn) 371
24.5.1 基本的命令解釋功能 371
24.5.2 聊天室 372
24.5.3 登錄和退出聊天室 372
24.5.4 主聊天室 373
24.5.5 新的服務(wù)器 373
24.6 進(jìn)一步探索 378
第 25章 項(xiàng)目6:使用CGI進(jìn)行遠(yuǎn)程編輯 379
25.1 問(wèn)題描述 379
25.2 有用的工具 379
25.3 準(zhǔn)備工作 380
25.4 初次實(shí)現(xiàn) 380
25.5 再次實(shí)現(xiàn) 381
25.5.1 創(chuàng)建文件名表單 381
25.5.2 編寫(xiě)編輯器腳本 382
25.5.3 編寫(xiě)保存腳本 383
25.5.4 運(yùn)行編輯器 384
25.6 進(jìn)一步探索 386
第 26章 項(xiàng)目7:自建公告板 387
26.1 問(wèn)題描述 387
26.2 有用的工具 387
26.3 準(zhǔn)備工作 388
26.4 初次實(shí)現(xiàn) 389
26.5 再次實(shí)現(xiàn) 393
26.5.1 編寫(xiě)腳本main.cgi 394
26.5.2 編寫(xiě)腳本view.cgi 395
26.5.3 編寫(xiě)腳本edit.cgi 396
26.5.4 編寫(xiě)腳本save.cgi 398
26.5.5 嘗試使用 399
26.6 進(jìn)一步探索 400
第 27章 項(xiàng)目8:使用XML-RPC共享文件 401
27.1 問(wèn)題描述 401
27.2 有用的工具 402
27.3 準(zhǔn)備工作 403
27.4 初次實(shí)現(xiàn) 403
27.4.1 實(shí)現(xiàn)簡(jiǎn)單的節(jié)點(diǎn) 403
27.4.2 嘗試使用 408
27.5 再次實(shí)現(xiàn) 409
27.5.1 創(chuàng)建客戶端界面 410
27.5.2 引發(fā)異常 410
27.5.3 驗(yàn)證文件名 411
27.5.4 嘗試使用 415
27.6 進(jìn)一步探索 415
第 28章 項(xiàng)目9:使用GUI共享文件 417
28.1 問(wèn)題描述 417
28.2 有用的工具 417
28.3 準(zhǔn)備工作 417
28.4 初次實(shí)現(xiàn) 417
28.5 再次實(shí)現(xiàn) 419
28.6 進(jìn)一步探索 422
第 29章 項(xiàng)目10:自制街機(jī)游戲 423
29.1 問(wèn)題描述 423
29.2 有用的工具 424
29.2.1 pygame 424
29.2.2 pygame.locals 424
29.2.3 pygame.display 424
29.2.4 pygame.font 425
29.2.5 pygame.sprite 425
29.2.6 pygame.mouse 425
29.2.7 pygame.event 425
29.2.8 pygame.image 426
29.3 準(zhǔn)備工作 426
29.4 初次實(shí)現(xiàn) 426
29.5 再次實(shí)現(xiàn) 429
29.6 進(jìn)一步探索 438
附錄A 簡(jiǎn)明教程 440
附錄B Python參考手冊(cè) 447