內容簡介
這是一本關於Python編程的書。它並不覆蓋Python的方方面面,其重點是呈現現代且精選的Python語言核心,即側重於Python編程本身。這包括抽象實現、程式結構、函式、對象與類型、協定、生成器、I/O、模組等主題,同時對Python常用的內置函式及標準庫進行了簡要介紹。這些內容能夠有效幫助Python程式設計師應對各種項目規模的挑戰。同時,本書通常會省略那些完全可以通過IDE輕鬆獲取的參考內容(例如函式列表、命令名稱、參數等),並特意不去描述Python編輯器工具、IDE、部署等快速變化的內容及相關問題。
圖書目錄
1 Python基礎 1
1.1 運行Python 1
1.2 Python程式 2
1.3 基本類型、變數與表達式 3
1.4 算術運算符 5
1.5 條件與控制流 7
1.6 文本串 9
1.7 檔案輸入與輸出 12
1.8 列表 13
1.9 元組 15
1.10 Set 17
1.11 字典18
1.12 疊代與循環 21
1.13 函式23
1.14 異常24
1.15 程式終止26
1.16 對象和類26
1.17 模組30
1.18 腳本編寫33
1.19 包 34
1.20 構建應用程式35
1.21 第三方包管理36
1.22 Python讓人感到舒適 37
2 運算符、表達式和數據操作 38
2.1 字面量 38
2.2 表達式與地址 39
2.3 標準運算符 40
2.4 就地賦值 42
2.5 對象比較 43
2.6 有序比較運算符 43
2.7 布爾表達式及真值 44
2.8 條件表達式 45
2.9 疊代操作 46
2.10 序列操作48
2.11 可變序列操作50
2.12 Set操作 51
2.13 映射操作52
2.14 列表、Set與字典解析式 53
2.15 生成器表達式55
2.16 特性(.)運算符 57
2.17 函式調用運算符 57
2.18 求值順序57
2.19 最後的話:數據的秘密59
3 程式結構與控制流 60
3.1 程式結構與執行 60
3.2 條件執行 60
3.3 循環與疊代 61
3.4 異常 65
3.4.1 異常層次 68
3.4.2 異常與控制流 69
3.4.3 定義新異常 70
3.4.4 鏈式異常 71
3.4.5 異常回溯 74
3.4.6 異常處理建議 74
3.5 上下文管理器和with語句 76
3.6 斷言和__debug__ 78
3.7 最後的話 79
4 對象、類型和協定 80
4.1 核心概念 80
4.2 對象標識與類型 81
4.3 引用計數與垃圾回收 82
4.4 引用與複製 84
4.5 對象的表示與列印 85
4.6 頭等對象 86
4.7 對可選的或缺失的數據使用None88
4.8 對象協定及數據抽象 88
4.9 對象協定 90
4.10 數字協定91
4.11 比較協定93
4.12 轉換協定95
4.13 容器協定96
4.14 疊代協定98
4.15 特性協定99
4.16 函式協定100
4.17 上下文管理器協定100
4.18 最後的話:關於Pythonic 101
5 函式 102
5.1 函式定義 102
5.2 預設參數 102
5.3 可變參數 103
5.4 關鍵字參數 104
5.5 可變關鍵字參數 105
5.6 接受所有輸入的函式 105
5.7 位置限定(Positional-Only)參數 106
5.8 名稱、文檔字元串和類型提示 107
5.9 函式套用及參數傳遞 108
5.10 返回值 110
5.11 錯誤處理111
5.12 作用域規則 112
5.13 遞歸115
5.14 lambda表達式 115
5.15 高階函式116
5.16 回調函式中的參數傳遞119
5.17 從回調函式返回結果 123
5.18 裝飾器 125
5.19 map、filter和reduce 128
5.20 函式自省、特性和簽名130
5.21 環境檢查133
5.22 動態代碼的執行和創建135
5.23 異步函式和await 136
5.24 最後的話:函式與組合的思考 138
6 生成器 139
6.1 生成器與yield 139
6.2 可重新啟動的生成器 142
6.3 生成器委託 142
6.4 生成器實踐 144
6.5 增強型生成器和yield表達式146
6.6 增強型生成器的套用 148
6.7 生成器與await的聯繫 151
6.8 最後的話:生成器簡史及展望 152
7 類和面向對象編程 153
7.1 對象 153
7.2 class語句 154
7.3 實例 155
7.4 特性訪問 156
7.5 作用域規則 158
7.6 運算符重載及協定 159
7.7 繼承 160
7.8 通過組合避免繼承 163
7.9 通過函式避免繼承 166
7.10 動態綁定和鴨子類型 167
7.11 繼承內置類型的危險性167
7.12 類變數和方法169
7.13 靜態方法173
7.14 略談設計模式176
7.15 數據封裝和私有特性 176
7.16 類型提示179
7.17 屬性180
7.18 類型、接口和抽象基類183
7.19 多重繼承、接口和mixin 187
7.20 基於類型的分派 193
7.21 類裝飾器194
7.22 有監督的繼承197
7.23 對象生命周期與記憶體管理 200
7.24 弱引用 204
7.25 內部對象表示和特性綁定 206
7.26 代理、包裝器和委託 208
7.27 使用__slots__減少記憶體210
7.28 描述符 211
7.29 類定義過程 215
7.30 動態創建類 216
7.31 元類218
7.32 用於實例和類的內置對象 222
7.33 最後的話:保持簡單 223
8 模組和包 224
8.1 模組和import語句 224
8.2 模組快取 226
8.3 從模組導入選定名稱 227
8.4 循環導入 229
8.5 模組的重新載入與卸載 231
8.6 模組編譯 232
8.7 模組搜尋路徑 232
8.8 作為主程式執行 233
8.9 包 234
8.10 包內導入236
8.11 以腳本方式運行包的子模組237
8.12 控制包命名空間 238
8.13 控制包的導出239
8.14 包數據 240
8.15 模組對象241
8.16 部署Python包 242
8.17 倒數第二句話:從一個包開始 244
8.18 最後的話:保持簡單 244
9 輸入與輸出 245
9.1 數據表示 245
9.2 文本編碼和解碼 246
9.3 文本和位元組格式化 248
9.4 讀取命令行選項 252
9.5 環境變數 253
9.6 檔案和檔案對象 254
9.6.1 檔案名稱稱 255
9.6.2 檔案模式 256
9.6.3 I/O緩衝 256
9.6.4 文本模式編碼 257
9.6.5 文本模式行處理 257
9.7 I/O抽象層258
9.8 標準輸入、輸出和錯誤 261
9.9 目錄 262
9.10 print函式 262
9.11 生成輸出263
9.12 消費輸入264
9.13 對象序列化 266
9.14 阻塞操作和並發 267
9.14.1 非阻塞I/O 268
9.14.2 I/O輪詢 269
9.14.3 執行緒 269
9.14.4 使用asyncio並發執行 270
9.15 標準庫模組 271
9.15.1 asyncio模組271
9.15.2 binascii模組272
9.15.3 cgi模組273
9.15.4 configparser模組274
9.15.5 csv模組 274
9.15.6 errno模組 275
9.15.7 fcntl模組 276
9.15.8 hashlib模組 276
9.15.9 http包 277
9.15.10 io模組 277
9.15.11 json模組 278
9.15.12 logging模組 278
9.15.13 os模組 279
9.15.14 os.path模組 279
9.15.15 pathlib模組 281
9.15.16 re模組 281
9.15.17 shutil模組 282
9.15.18 select模組282
9.15.19 smtplib模組 283
9.15.20 socket模組 284
9.15.21 struct模組 286
9.15.22 subprocess模組286
9.15.23 tempfile模組 287
9.15.24 textwrap模組 288
9.15.25 threading模組 289
9.15.26 time模組 291
9.15.27 urllib包 291
9.15.28 unicodedata模組 292
9.15.29 xml包293
9.16 最後的話294
10 內置函式和標準庫 295
10.1 內置函式295
10.2 內置異常311
10.2.1 異常基類 311
10.2.2 異常特性 311
10.2.3 預定義異常類 312
10.3 標準庫 315
10.3.1 collections模組 315
10.3.2 datetime模組 315
10.3.3 itertools模組 315
10.3.4 inspect模組316
10.3.5 math模組 316
10.3.6 os模組 316
10.3.7 random模組 316
10.3.8 re模組 316
10.3.9 shutil模組 316
10.3.10 statistics模組 316
10.3.11 sys模組 316
10.3.12 time模組 316
10.3.13 turtle模組 317
10.3.14 unittest模組 317
10.4 最後的話:使用內置功能 317
作者簡介
David M. Beazley是PythonEssential Reference(第4版,Addison-Wesley,2010年出版)和Python Cookbook(第3版,O'Reilly,2013年出版)的作者。他目前在自己的公司Dabeaz教授計算機科學高級課程。自1996年以來,他一直在使用及教授Python,並進行Python方面的寫作及演講。
譯者簡介
盧俊祥,網名2gua,書迷;關注Web技術趨勢,熱衷於App開發、Web開發、數據分析、架構設計以及各類程式語言;陳氏太極拳五十六式愛好者。主要譯著有:《The Little Schemer:遞歸與函式式的奧妙》《SPA設計與架構:理解單頁面Web套用》。