這是一本關(guān)于Python編程的書。它并不覆蓋Python的方方面面,其重點是呈現(xiàn)現(xiàn)代且精選的Python語言核心,即側(cè)重于Python編程本身。這包括抽象實現(xiàn)、程序結(jié)構(gòu)、函數(shù)、對象與類型、協(xié)議、生成器、I/O、模塊等主題,同時對Python常用的內(nèi)置函數(shù)及標準庫進行了簡要介紹。這些內(nèi)容能夠有效幫助Python程序員應(yīng)對各種項目規(guī)模的挑戰(zhàn)。同時,本書通常會省略那些完全可以通過IDE輕松獲取的參考內(nèi)容(例如函數(shù)列表、命令名稱、參數(shù)等),并特意不去描述Python編輯器工具、IDE、部署等快速變化的內(nèi)容及相關(guān)問題。本書適合Python程序員及相關(guān)科學(xué)家、工程師、軟件專業(yè)人士閱讀。
David M. Beazley是Python Essential Reference(第4版,Addison-Wesley,2010年出版)和Python Cookbook(第3版,O'Reilly,2013年出版)的作者。他目前在自己的公司Dabeaz教授計算機科學(xué)高級課程。自1996年以來,他一直在使用及教授Python,并進行Python方面的寫作及演講。
盧俊祥,網(wǎng)名2gua,書迷;關(guān)注Web技術(shù)趨勢,熱衷于App開發(fā)、Web開發(fā)、數(shù)據(jù)分析、架構(gòu)設(shè)計以及各類編程語言;陳氏太極拳五十六式愛好者。主要譯著有:《The Little Schemer:遞歸與函數(shù)式的奧妙》《SPA設(shè)計與架構(gòu):理解單頁面Web應(yīng)用》。
1 Python基礎(chǔ)\t1
1.1 運行Python\t1
1.2 Python程序\t2
1.3 基本類型、變量與表達式\t3
1.4 算術(shù)運算符\t5
1.5 條件與控制流\t7
1.6 文本串\t9
1.7 文件輸入與輸出\t12
1.8 列表\t13
1.9 元組\t15
1.10 Set\t17
1.11 字典\t18
1.12 迭代與循環(huán)\t21
1.13 函數(shù)\t23
1.14 異常\t24
1.15 程序終止\t26
1.16 對象和類\t26
1.17 模塊\t30
1.18 腳本編寫\t33
1.19 包\t34
1.20 構(gòu)建應(yīng)用程序\t35
1.21 第三方包管理\t36
1.22 Python讓人感到舒適\t37
2 運算符、表達式和數(shù)據(jù)操作\t38
2.1 字面量\t38
2.2 表達式與地址\t39
2.3 標準運算符\t40
2.4 就地賦值\t42
2.5 對象比較\t43
2.6 有序比較運算符\t43
2.7 布爾表達式及真值\t44
2.8 條件表達式\t45
2.9 迭代操作\t46
2.10 序列操作\t48
2.11 可變序列操作\t50
2.12 Set操作\t51
2.13 映射操作\t52
2.14 列表、Set與字典解析式\t53
2.15 生成器表達式\t55
2.16 特性(.)運算符\t57
2.17 函數(shù)調(diào)用()運算符\t57
2.18 求值順序\t57
2.19 最后的話:數(shù)據(jù)的秘密\t59
3 程序結(jié)構(gòu)與控制流\t60
3.1 程序結(jié)構(gòu)與執(zhí)行\(zhòng)t60
3.2 條件執(zhí)行\(zhòng)t60
3.3 循環(huán)與迭代\t61
3.4 異常\t65
3.4.1 異常層次\t68
3.4.2 異常與控制流\t69
3.4.3 定義新異常\t70
3.4.4 鏈式異常\t71
3.4.5 異;厮輁t74
3.4.6 異常處理建議\t74
3.5 上下文管理器和with語句\t76
3.6 斷言和__debug__\t78
3.7 最后的話\t79
4 對象、類型和協(xié)議\t80
4.1 核心概念\t80
4.2 對象標識與類型\t81
4.3 引用計數(shù)與垃圾回收\t82
4.4 引用與復(fù)制\t84
4.5 對象的表示與打印\t85
4.6 頭等對象\t86
4.7 對可選的或缺失的數(shù)據(jù)使用None\t88
4.8 對象協(xié)議及數(shù)據(jù)抽象\t88
4.9 對象協(xié)議\t90
4.10 數(shù)字協(xié)議\t91
4.11 比較協(xié)議\t93
4.12 轉(zhuǎn)換協(xié)議\t95
4.13 容器協(xié)議\t96
4.14 迭代協(xié)議\t98
4.15 特性協(xié)議\t99
4.16 函數(shù)協(xié)議\t100
4.17 上下文管理器協(xié)議\t100
4.18 最后的話:關(guān)于Pythonic\t101
5 函數(shù)\t102
5.1 函數(shù)定義\t102
5.2 缺省參數(shù)\t102
5.3 可變參數(shù)\t103
5.4 關(guān)鍵字參數(shù)\t104
5.5 可變關(guān)鍵字參數(shù)\t105
5.6 接受所有輸入的函數(shù)\t105
5.7 位置限定(Positional-Only)參數(shù)\t106
5.8 名稱、文檔字符串和類型提示\t107
5.9 函數(shù)應(yīng)用及參數(shù)傳遞\t108
5.10 返回值\t110
5.11 錯誤處理\t111
5.12 作用域規(guī)則\t112
5.13 遞歸\t115
5.14 lambda表達式\t115
5.15 高階函數(shù)\t116
5.16 回調(diào)函數(shù)中的參數(shù)傳遞\t119
5.17 從回調(diào)函數(shù)返回結(jié)果\t123
5.18 裝飾器\t125
5.19 map、filter和reduce\t128
5.20 函數(shù)自省、特性和簽名\t130
5.21 環(huán)境檢查\t133
5.22 動態(tài)代碼的執(zhí)行和創(chuàng)建\t135
5.23 異步函數(shù)和await\t136
5.24 最后的話:函數(shù)與組合的思考\t138
6 生成器\t139
6.1 生成器與yield\t139
6.2 可重新啟動的生成器\t142
6.3 生成器委托\(zhòng)t142
6.4 生成器實踐\t144
6.5 增強型生成器和yield表達式\t146
6.6 增強型生成器的應(yīng)用\t148
6.7 生成器與await的聯(lián)系\t151
6.8 最后的話:生成器簡史及展望\t152
7 類和面向?qū)ο缶幊蘚t153
7.1 對象\t153
7.2 class語句\t154
7.3 實例\t155
7.4 特性訪問\t156
7.5 作用域規(guī)則\t158
7.6 運算符重載及協(xié)議\t159
7.7 繼承\(zhòng)t160
7.8 通過組合避免繼承\(zhòng)t163
7.9 通過函數(shù)避免繼承\(zhòng)t166
7.10 動態(tài)綁定和鴨子類型\t167
7.11 繼承內(nèi)置類型的危險性\t167
7.12 類變量和方法\t169
7.13 靜態(tài)方法\t173
7.14 略談設(shè)計模式\t176
7.15 數(shù)據(jù)封裝和私有特性\t176
7.16 類型提示\t179
7.17 屬性\t180
7.18 類型、接口和抽象基類\t183
7.19 多重繼承、接口和mixin\t187
7.20 基于類型的分派\t193
7.21 類裝飾器\t194
7.22 有監(jiān)督的繼承\(zhòng)t197
7.23 對象生命周期與內(nèi)存管理\t200
7.24 弱引用\t204
7.25 內(nèi)部對象表示和特性綁定\t206
7.26 代理、包裝器和委托\(zhòng)t208
7.27 使用__slots__減少內(nèi)存\t210
7.28 描述符\t211
7.29 類定義過程\t215
7.30 動態(tài)創(chuàng)建類\t216
7.31 元類\t218
7.32 用于實例和類的內(nèi)置對象\t222
7.33 最后的話:保持簡單\t223
8 模塊和包\t224
8.1 模塊和import語句\t224
8.2 模塊緩存\t226
8.3 從模塊導(dǎo)入選定名稱\t227
8.4 循環(huán)導(dǎo)入\t229
8.5 模塊的重新加載與卸載\t231
8.6 模塊編譯\t232
8.7 模塊搜索路徑\t232
8.8 作為主程序執(zhí)行\(zhòng)t233
8.9 包\t234
8.10 包內(nèi)導(dǎo)入\t236
8.11 以腳本方式運行包的子模塊\t237
8.12 控制包命名空間\t238
8.13 控制包的導(dǎo)出\t239
8.14 包數(shù)據(jù)\t240
8.15 模塊對象\t241
8.16 部署Python包\t242
8.17 倒數(shù)第二句話:從一個包開始\t244
8.18 最后的話:保持簡單\t244
9 輸入與輸出\t245
9.1 數(shù)據(jù)表示\t245
9.2 文本編碼和解碼\t246
9.3 文本和字節(jié)格式化\t248
9.4 讀取命令行選項\t252
9.5 環(huán)境變量\t253
9.6 文件和文件對象\t254
9.6.1 文件名稱\t255
9.6.2 文件模式\t256
9.6.3 I/O緩沖\t256
9.6.4 文本模式編碼\t257
9.6.5 文本模式行處理\t257
9.7 I/O抽象層\t258
9.8 標準輸入、輸出和錯誤\t261
9.9 目錄\t262
9.10 print()函數(shù)\t262
9.11 生成輸出\t263
9.12 消費輸入\t264
9.13 對象序列化\t266
9.14 阻塞操作和并發(fā)\t267
9.14.1 非阻塞I/O\t268
9.14.2 I/O輪詢\t269
9.14.3 線程\t269
9.14.4 使用asyncio并發(fā)執(zhí)行\(zhòng)t270
9.15 標準庫模塊\t271
9.15.1 asyncio模塊\t271
9.15.2 binascii模塊\t272
9.15.3 cgi模塊\t273
9.15.4 configparser模塊\t274
9.15.5 csv模塊\t274
9.15.6 errno模塊\t275
9.15.7 fcntl模塊\t276
9.15.8 hashlib模塊\t276
9.15.9 http包\t277
9.15.10 io模塊\t277
9.15.11 json模塊\t278
9.15.12 logging模塊\t278
9.15.13 os模塊\t279
9.15.14 os.path模塊\t279
9.15.15 pathlib模塊\t281
9.15.16 re模塊\t281
9.15.17 shutil模塊\t282
9.15.18 select模塊\t282
9.15.19 smtplib模塊\t283
9.15.20 socket模塊\t284
9.15.21 struct模塊\t286
9.15.22 subprocess模塊\t286
9.15.23 tempfile模塊\t287
9.15.24 textwrap模塊\t288
9.15.25 threading模塊\t289
9.15.26 time模塊\t291
9.15.27 urllib包\t291
9.15.28 unicodedata模塊\t292
9.15.29 xml包\t293
9.16 最后的話\t294
10 內(nèi)置函數(shù)和標準庫\t295
10.1 內(nèi)置函數(shù)\t295
10.2 內(nèi)置異常\t311
10.2.1 異;怽t311
10.2.2 異常特性\t311
10.2.3 預(yù)定義異常類\t312
10.3 標準庫\t315
10.3.1 collections模塊\t315
10.3.2 datetime模塊\t315
10.3.3 itertools模塊\t315
10.3.4 inspect模塊\t316
10.3.5 math模塊\t316
10.3.6 os模塊\t316
10.3.7 random模塊\t316
10.3.8 re模塊\t316
10.3.9 shutil模塊\t316
10.3.10 statistics模塊\t316
10.3.11 sys模塊\t316
10.3.12 time模塊\t316
10.3.13 turtle模塊\t317
10.3.14 unittest模塊\t317
10.4 最后的話:使用內(nèi)置功能\t317