Python 精粹

盧俊祥

商品描述

這是一本關於Python編程的書。它並不覆蓋Python的方方面面,其重點是呈現現代且精選的Python語言核心,即側重於Python編程本身。這包括抽象實現、程序結構、函數、對象與類型、協議、生成器、I/O、模塊等主題,同時對Python常用的內置函數及標準庫進行了簡要介紹。這些內容能夠有效幫助Python程序員應對各種項目規模的挑戰。同時,本書通常會省略那些完全可以通過IDE輕松獲取的參考內容(例如函數列表、命令名稱、參數等),並特意不去描述Python編輯器工具、IDE、部署等快速變化的內容及相關問題。本書適合Python程序員及相關科學家、工程師、軟件專業人士閱讀。

目錄大綱

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 對可選的或缺失的數據使用None 88
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