內容簡介
本書Python新手入門經典圖書,涵蓋了Python編程的方方面面。本書前半部分介紹了基礎知識與概念:從安裝Python、配置開發環境,到列表、元組、字元串、字典以及各種語句的基礎知識,再到抽象、異常、方法、屬性、疊代器等核心概念,Python與資料庫、網路、C語言等工具結合使用,以及Python程式測試、打包、發布等知識。本書的後半部分,向讀者詳盡介紹了當下流行的多個Python項目的開發過程。 本次修訂,不僅在結構與細節知識上進行了最佳化和完善,還增加了貼近真實商業環境的案例,並輔以課件PPT和專門針對求職應聘的習題,旨在幫助讀者真正掌握Python開發的實戰能力。
作者簡介
芒努斯.利.海特蘭德,在挪威科技大學教授算法課程,是研究與使用Python的實踐者,並創作了大量Python圖書和教程,在中國有超過30萬讀者通過本書邁入Python編程的大門。
圖書目錄
曉陽 14:49:15
第 1章 快速上手:基礎知識 1
1.1 互動式解釋器 1
1.2 算法是什麼 2
1.3 數和表達式 3
1.4 變數 4
1.5 語句 5
1.6 獲取用戶輸入 6
1.7 函式 7
1.8 模組 8
1.8.1 cmath和複數 9
1.8.2 回到未來 9
1.9 保存並執行程式 10
1.9.1 從命令提示符運行Python
腳本 11
1.9.2 讓腳本像普通程式一樣 11
1.9.3 注釋 12
1.10 字元串 13
1.10.1 單引號字元串以及對引號
轉義 13
1.10.2 拼接字元串 14
1.10.3 字元串表示str和repr 14
1.10.4 長字元串、原始字元串和
位元組 15
1.11 小結 20
1.11.1 本章介紹的新函式 20
1.11.2 預告 21
第 2章 列表和元組 22
2.1 序列概述 22
2.2 通用的序列操作 23
2.2.1 索引 23
2.2.2 切片 25
2.2.3 序列相加 27
2.2.4 乘法 27
2.2.5 成員資格 28
2.3 列表:Python的主力 30
2.3.1 函式list 30
2.3.2 基本的列表操作 30
2.3.3 列表方法 31
2.4 元組:不可修改的序列 37
2.5 小結 38
2.5.1 本章介紹的新函式 39
2.5.2 預告 39
第3章 使用字元串 40
3.1 字元串基本操作 40
3.2 設定字元串的格式:精簡版 40
3.3 設定字元串的格式:完整版 42
3.3.1 替換欄位名 42
3.3.2 基本轉換 43
3.3.3 寬度、精度和千位分隔設定 44
3.3.4 符號、對齊和用0填充 45
3.4 字元串方法 47
3.4.1 center 47
3.4.2 find 47
3.4.3 join 48
3.4.4 lower 49
3.4.5 replace 49
3.4.6 split 50
3.4.7 strip 50
3.4.8 translate 51
3.4.9 判斷字元串是否滿足特定的
條件 51
3.5 小結 51
3.5.1 本章介紹的新函式 52
3.5.2 預告 52
第4章 字典 53
4.1 字典的用途 53
4.2 創建和使用字典 54
4.2.1 函式dict 54
4.2.2 基本的字典操作 54
4.2.3 將字元串格式設定功能用於
字典 56
4.2.4 字典方法 57
4.3 小結 62
4.3.1 本章介紹的新函式 62
4.3.2 預告 62
第5章 條件、循環及其他語句 63
5.1 再談print和import 63
5.1.1 列印多個參數 63
5.1.2 導入時重命名 64
5.2 賦值魔法 65
5.2.1 序列解包 65
5.2.2 鏈式賦值 66
5.2.3 增強賦值 66
5.3 代碼塊:縮進的樂趣 67
5.4 條件和條件語句 67
5.4.1 這正是布爾值的用武之地 68
5.4.2 有條件地執行和if語句 69
5.4.3 else子句 69
5.4.4 elif子句 70
5.4.5 代碼塊嵌套 70
5.4.6 更複雜的條件 70
5.4.7 斷言 74
5.5 循環 75
5.5.1 while循環 75
5.5.2 for循環 76
5.5.3 疊代字典 77
5.5.4 一些疊代工具 77
5.5.5 跳出循環 79
5.5.6 循環中的else子句 81
5.6 簡單推導 81
5.7 三人行 83
5.7.1 什麼都不做 83
5.7.2 使用del刪除 83
5.7.3 使用exec和eval執行字元串及計算其結果 84
5.8 小結 86
5.8.1 本章介紹的新函式 87
5.8.2 預告 88
第6章 函式 89
6.1 懶惰是一種美德 89
6.2 抽象和結構 90
6.3 自定義函式 90
6.3.1 給函式編寫文檔 91
6.3.2 其實並不是函式的函式 92
6.4 參數魔法 92
6.4.1 值從哪裡來 93
6.4.2 我能修改參數嗎 93
6.4.3 關鍵字參數和默認值 97
6.4.4 收集參數 99
6.4.5 分配參數 101
6.4.6 練習使用參數 102
6.5 作用域 104
6.6 遞歸 106
6.6.1 兩個經典案例:階乘和冪 107
6.6.2 另一個經典案例:二分查找 108
6.7 小結 111
6.7.1 本章介紹的新函式 111
6.7.2 預告 112
第7章 面向對象 113
7.1 對象魔法 113
7.1.1 多態 113
7.1.2 多態和方法 115
7.1.3 封裝 116
7.1.4 繼承 118
7.2 類 118
7.2.1 類到底是什麼 118
7.2.2 創建自定義類 119
7.2.3 屬性、函式和方法 120
7.2.4 再談隱藏 120
7.2.5 類的命名空間 122
7.2.6 指定超類 123
7.2.7 深入探討繼承 124
7.2.8 多個超類 124
7.2.9 接口和內省 125
7.2.10 抽象基類 126
7.3 關於面向對象設計的一些思考 128
7.4 小結 128
7.4.1 本章介紹的新函式 129
7.4.2 預告 129
第8章 異常 130
8.1 異常是什麼 130
8.2 讓事情沿你指定的軌道出錯 130
8.2.1 raise語句 130
8.2.2 自定義的異常類 131
8.3 捕獲異常 132
8.3.1 不用提供參數 132
8.3.2 多個except子句 134
8.3.3 一箭雙鵰 134
8.3.4 捕獲對象 135
8.3.5 一網打盡 135
8.3.6 萬事大吉時 136
8.3.7 最後 137
8.4 異常和函式 138
8.5 異常之禪 138
8.6 不那么異常的情況 140
8.7 小結 141
8.7.1 本章介紹的新函式 141
8.7.2 預告 141
第9章 魔法方法、特性和疊代器 142
9.1 構造函式 142
9.1.1 重寫普通方法和特殊的構造
函式 143
9.1.2 調用未關聯的超類構造函式 145
9.1.3 使用函式super 145
9.2 元素訪問 146
9.2.1 基本的序列和映射協定 147
9.2.2 從list、dict和str派生 149
9.3 其他魔法方法 150
9.4 特性 150
9.4.1 函式property 151
9.4.2 靜態方法和類方法 152
9.4.3 __getattr__、__setattr__等方法 153
9.5 疊代器 154
9.5.1 疊代器協定 154
9.5.2 從疊代器創建序列 156
9.6 生成器 156
9.6.1 創建生成器 156
9.6.2 遞歸式生成器 157
9.6.3 通用生成器 159
9.6.4 生成器的方法 159
9.6.5 模擬生成器 160
9.7 八皇后問題 161
9.7.1 生成器的回溯 161
9.7.2 問題 161
9.7.3 狀態表示 162
9.7.4 檢測衝突 162
9.7.5 基線條件 163
9.7.6 遞歸條件 163
9.7.7 掃尾工作 165
9.8 小結 165
9.8.1 本章介紹的新函式 166
9.8.2 預告 166
第 10章 模組 167
10.1 模組概述 167
10.1.1 模組就是程式 167
10.1.2 模組是用來下定義的 169
10.1.3 讓模組可用 171
10.1.4 包 172
10.2 探索模組 173
10.2.1 模組包含什麼 173
10.2.2 使用help獲取幫助 174
10.2.3 文檔 175
10.2.4 使用原始碼 176
10.3 標準庫:一些深受歡迎的模組 176
10.3.1 sys 176
10.3.2 os 178
10.3.3 fileinput 180
10.3.4 集合、堆和雙端佇列 181
10.3.5 time 186
10.3.6 random 187
10.3.7 shelve和json 190
10.3.8 re 193
10.3.9 其他有趣的標準模組 205
10.4 小結 207
10.4.1 本章介紹的新函式 207
10.4.2 預告 207
第 11章 檔案 208
11.1 打開檔案 208
11.2 檔案的基本方法 209
11.2.1 讀取和寫入 210
11.2.2 使用管道重定向輸出 210
11.2.3 讀取和寫入行 212
11.2.4 關閉檔案 212
11.2.5 使用檔案的基本方法 213
11.3 疊代檔案內容 215
11.3.1 每次一個字元(或位元組) 215
11.3.2 每次一行 216
11.3.3 讀取所有內容 216
11.3.4 使用fileinput實現延遲行疊代 216
11.3.5 檔案疊代器 217
11.4 小結 218
11.4.1 本章介紹的新函式 218
11.4.2 預告 218
第 12章 圖形用戶界面 219
12.1 創建GUI示例應用程式 219
12.1.1 初探 220
12.1.2 布局 221
12.1.3 事件處理 222
12.1.4 最終的程式 223
12.2 使用其他GUI工具包 224
12.3 小結 225
第 13章 資料庫 226
13.1 Python資料庫API 226
13.1.1 全局變數 227
13.1.2 異常 227
13.1.3 連線和游標 228
13.1.4 類型 230
13.2 SQLite和PySQLite 230
13.2.1 起步 231
13.2.2 資料庫應用程式示例 231
13.3 小結 234
13.3.1 本章介紹的新函式 234
13.3.2 預告 234
曉陽 14:49:17
第 14章 網路編程 235
14.1 幾個網路模組 235
14.1.1 模組socket 235
14.1.2 模組urllib和urllib2 237
14.1.3 其他模組 239
14.2 SocketServer及相關的類 240
14.3 多個連線 240
14.3.1 使用SocketServer實現
分叉和執行緒化 242
14.3.2 使用select和poll實現
異步I/O 242
14.4 Twisted 245
14.4.1 下載並安裝Twisted 245
14.4.2 編寫Twisted伺服器 245
14.5 小結 247
14.5.1 本章介紹的新函式 248
14.5.2 預告 248
第 15章 Python和Web 249
15.1 螢幕抓取 249
15.1.1 Tidy和XHTML解析 250
15.1.2 Beautiful Soup 254
15.2 使用CGI創建動態網頁 255
15.2.1 第 一步:準備Web伺服器 255
15.2.2 第二步:添加!#行 256
15.2.3 第三步:設定檔案許可權 256
15.2.4 CGI安全風險 257
15.2.5 簡單的CGI腳本 257
15.2.6 使用cgitb進行調試 258
15.2.7 使用模組cgi 259
15.2.8 簡單的表單 260
15.3 使用Web框架 261
15.4 Web服務:更高級的抓取 262
15.4.1 RSS和相關內容 263
15.4.2 使用XML-RPC進行遠程
過程調用 263
15.4.3 SOAP 264
15.5 小結 264
15.5.1 本章介紹的新函式 265
15.5.2 預告 265
第 16章 測試基礎 266
16.1 先測試再編碼 266
16.1.1 準確的需求說明 266
16.1.2 做好應對變化的準備 268
16.1.3 測試四步曲 268
16.2 測試工具 269
16.2.1 doctest 269
16.2.2 unittest 271
16.3 超越單元測試 273
16.3.1 使用PyChecker和PyLint
檢查原始碼 273
16.3.2 性能分析 276
16.4 小結 277
16.4.1 本章介紹的新函式 278
16.4.2 預告 278
第 17章 擴展Python 279
17.1 魚和熊掌兼得 279
17.2 簡單易行的方式:Jython和
IronPython 280
17.3 編寫C語言擴展 282
17.3.1 SWIG 284
17.3.2 手工編寫擴展 287
17.4 小結 291
17.4.1 本章介紹的新函式 291
17.4.2 預告 291
第 18章 程式打包 292
18.1 Setuptools基礎 292
18.2 打包 294
18.3 編譯擴展 295
18.4 使用py2exe創建可執行程式 296
18.5 小結 296
18.5.1 本章介紹的新函式 297
18.5.2 預告 297
第 19章 趣味編程 298
19.1 為何要有趣 298
19.2 編程柔術 298
19.3 原型設計 299
19.4 配置 300
19.4.1 提取常量 300
19.4.2 配置檔案 301
19.5 日誌 303
19.6 如果你已不勝其煩 304
19.7 如果你想深入學習 304
19.8 小結 305
第 20章 項目1:自動添加標籤 306
20.1 問題描述 306
20.2 有用的工具 307
20.3 準備工作 307
20.4 初次實現 308
20.4.1 找出文本塊 308
20.4.2 添加一些標記 309
20.5 再次實現 310
20.5.1 處理程式 311
20.5.2 處理程式的超類 311
20.5.3 規則 313
20.5.4 規則的超類 314
20.5.5 過濾器 314
20.5.6 解析器 314
20.5.7 創建規則和過濾器 315
20.5.8 整合起來 318
20.6 進一步探索 322
第 21章 項目2:繪製圖表 323
21.1 問題描述 323
21.2 有用的工具 323
21.3 準備工作 324
21.4 初次實現 324
21.4.1 使用ReportLab繪圖 325
21.4.2 繪製折線 326
21.4.3 編寫原型 326
21.5 再次實現 328
21.5.1 獲取數據 328
21.5.2 使用LinePlot類 328
21.6 進一步探索 330
第 22章 項目3:萬能的XML 331
22.1 問題描述 331
22.2 有用的工具 332
22.3 準備工作 332
22.4 初次實現 333
22.4.1 創建簡單的內容處理程式 334
22.4.2 創建HTML頁面 336
22.5 再次實現 338
22.5.1 分派器混合類 338
22.5.2 將首部和尾部寫入檔案的
方法以及默認處理程式 339
22.5.3 支持目錄 340
22.5.4 事件處理程式 340
22.6 進一步探索 343
第 23章 項目4:新聞匯總 344
23.1 問題描述 344
23.2 有用的工具 345
23.3 準備工作 345
23.4 初次實現 345
23.5 再次實現 347
23.6 進一步探索 353
第 24章 項目5:虛擬茶話會 355
24.1 問題描述 355
24.2 有用的工具 355
24.3 準備工作 356
24.4 初次實現 357
24.4.1 ChatServer類 357
24.4.2 ChatSession類 358
24.4.3 整合起來 360
24.5 再次實現 362
24.5.1 基本的命令解釋功能 362
24.5.2 聊天室 363
24.5.3 登錄和退出聊天室 363
24.5.4 主聊天室 364
24.5.5 新的伺服器 364
24.6 進一步探索 369
第 25章 項目6:使用CGI進行遠程
編輯 370
25.1 問題描述 370
25.2 有用的工具 370
25.3 準備工作 371
25.4 初次實現 371
25.5 再次實現 372
25.5.1 創建檔案名稱表單 372
25.5.2 編寫編輯器腳本 373
25.5.3 編寫保存腳本 374
25.5.4 運行編輯器 375
25.6 進一步探索 377
第 26章 項目7:自建公告板 378
26.1 問題描述 378
26.2 有用的工具 378
26.3 準備工作 379
26.4 初次實現 380
26.5 再次實現 384
26.5.1 編寫腳本main.cgi 385
26.5.2 編寫腳本view.cgi 386
26.5.3 編寫腳本edit.cgi 387
26.5.4 編寫腳本save.cgi 389
26.5.5 嘗試使用 390
26.6 進一步探索 391
第 27章 項目8:使用XML-RPC共享
檔案 392
27.1 問題描述 392
27.2 有用的工具 393
27.3 準備工作 394
27.4 初次實現 394
27.4.1 實現簡單的節點 394
27.4.2 嘗試使用 399
27.5 再次實現 400
27.5.1 創建客戶端界面 401
27.5.2 引發異常 401
27.5.3 驗證檔案名稱 402
27.5.4 嘗試使用 406
27.6 進一步探索 406
第 28章 項目9:使用GUI已分享檔案 408
28.1 問題描述 408
28.2 有用的工具 408
28.3 準備工作 408
28.4 初次實現 408
28.5 再次實現 410
28.6 進一步探索 413
第 29章 項目10:自製街機遊戲 414
29.1 問題描述 414
29.2 有用的工具 415
29.2.1 pygame 415
29.2.2 pygame.locals 415
29.2.3 pygame.display 415
29.2.4 pygame.font 416
29.2.5 pygame.sprite 416
29.2.6 pygame.mouse 416
29.2.7 pygame.event 416
29.2.8 pygame.image 417
29.3 準備工作 417
29.4 初次實現 417
29.5 再次實現 420
29.6 進一步探索 429
附錄A 簡明教程 430
附錄B Python參考手冊 437