Python高級編程-(第2版) 版權信息
- ISBN:9787115460158
- 條形碼:9787115460158 ; 978-7-115-46015-8
- 裝幀:一般膠版紙
- 冊數:暫無
- 重量:暫無
- 所屬分類:>>
Python高級編程-(第2版) 本書特色
Python作為一種高-級程序設計語言,憑借其簡潔、易讀及可擴展性日漸成為程序設計領域備受推崇的語言之一。
本書基于Python 3.5版本進行講解,通過13章的內容,深度揭示了Python編程的高-級技巧。本書從Python語言及其社區的現狀開始介紹,對Python語法、命名規則、Python包的編寫、部署代碼、擴展程序開發、管理代碼、文檔編寫、測試開發、代碼優化、并發編程、設計模式等重要話題進行了全面系統化的講解。
本書適合想要進一步提高自身Python編程技能的讀者閱讀,也適合對Python編程感興趣的讀者參考學習。全書結合典型且實用的開發案例,可以幫助讀者創建高性能的、可靠且可維護的Python應用。
Python高級編程-(第2版) 內容簡介
Python是一門動態編程語言,它簡單而又強大,適用于眾多領域。盡管編寫Python代碼比較容易,但是編寫高效且易于維護和復用的代碼是一個挑戰。
本書的重點是讓你熟悉zui佳實踐、有用的工具以及標準,這都是Python專業人士每天使用的。首先,你將了解Python 3.5中新增加的功能以及可以提高生產力的快速技巧。接下來,你將學習使用這個新版本中的高-級且有用的Python語法元素,以及實現元編程的不同方法。本書講解了代碼管理工具、編寫清晰文檔的方法和測試驅動開發,這些都是編寫代碼的重要因素。通過學習優化的一般原則、查找瓶頸的策略以及應用優化的選定工具,你可以對如何編寫高效的代碼有更深入的理解。
讀完本書后,你會成為一名可以編寫高效且可維護代碼的專家。
通過閱讀本書,你將能夠:
了解在Python社區中廣泛采用的約定和zui佳實踐;
高效打包Python代碼,以便將其應用于社區和生產;
應用在遠程系統上自動化部署代碼的簡單且輕量的方法;
提高代碼的質量、可靠性及性能;
在Python中編寫并發代碼;
使用其他語言編寫的代碼來擴展Python。
Python高級編程-(第2版) 目錄
目錄
第1章 Python現狀 1
1.1
Python的現狀與未來 1
1.2
Python升級及其原因 2
1.3 追蹤Python*新變化——PEP文檔 2
1.4 當前Python 3的普及程度 3
1.5
Python 3和Python 2的主要差異 4
1.5.1
為什么要關注這些差異 4
1.5.2
主要的語法差異和常見陷阱 4
1.5.3
用于保持跨版本兼容性的常用工具和技術 6
1.6 不只是CPython 9
1.6.1
為什么要關注Python實現 10
1.6.2
Stackless Python 10
1.6.3
Jython 10
1.6.4
IronPython 11
1.6.5
PyPy 11
1.7
Python開發的現代方法 12
1.8 應用層Python環境隔離 13
1.8.1
為什么要隔離 14
1.8.2
常用解決方案 15
1.8.3
選擇哪種工具 18
1.9 系統級環境隔離 19
1.9.1
使用Vagrant的虛擬開發環境 20
1.9.2
容器化與虛擬化的對比 21
1.10
常用的生產力工具 21
1.10.1
自定義Python shell— IPython、bpython、 ptpython等 22
1.10.2
交互式調試器 24
1.11
有用的資源 25
1.12
小結 25
第2章 語法*佳實踐——類級別以下 26
2.1
Python的內置類型 26
2.1.1
字符串與字節 27
2.1.2
集合類型 30
2.2 高級語法 39
2.2.1
迭代器 40
2.2.2
yield語句 41
2.2.3
裝飾器 44
2.2.4
上下文管理器—with語句 54
2.3 你可能還不知道的其他語法元素 58
2.3.1
for...else...語句 58
2.3.2
函數注解 59
2.4 小結 60
第3章 語法*佳實踐—類級別以上 61
3.1 子類化內置類型 61
3.2 訪問超類中的方法 63
3.2.1
Python 2中的舊式類與super 65
3.2.2
理解Python的方法解析順序 66
3.2.3
使用super易犯的錯誤 70
3.2.4
*佳實踐 73
3.3 高級屬性訪問模式 73
3.3.1
描述符 74
3.3.2
property 79
3.3.3
槽 81
3.4 元編程 82
3.4.1
裝飾器—
一種元編程方法 83
3.4.2
類裝飾器 83
3.4.3
使用__new__()方法覆寫實例創建過程 85
3.4.4
元類 87
3.4.5
一些關于代碼生成的提示 94
3.5 小結 100
第4章 選擇好的名稱 101
4.1
PEP 8與命名*佳實踐 101
4.1.1
為何要遵守PEP 8以及何時遵守PEP 8 101
4.1.2
超越PEP 8—團隊的風格指南 102
4.2 命名風格 102
4.3 命名指南 110
4.3.1
用“has”或“is”前綴命名布爾元素 111
4.3.2
用復數形式命名集合變量 111
4.3.3
用顯式名稱命名字典 111
4.3.4
避免通用名稱 111
4.3.5
避免現有名稱 112
4.4 參數的*佳實踐 113
4.4.1
通過迭代設計構建參數 113
4.4.2
信任參數和測試 114
4.4.3
小心使用*args和**kwargs魔法參數 115
4.5 類的名稱 117
4.6 模塊和包的名稱 117
4.7 有用的工具 118
4.7.1
Pylint 118
4.7.2
pep8和flake8 120
4.8 小結 120
第5章 編寫一個包 121
5.1 創建一個包 121
5.1.1
Python打包工具的混亂狀態 122
5.1.2
項目配置 123
5.1.3
自定義setup命令 131
5.1.4
在開發期間使用包 132
5.2 命名空間包 133
5.2.1
為什么有用 133
5.2.2
PEP 420—隱式命名空間包 135
5.2.3
以前Python版本中的命名空間包 136
5.3 上傳一個包 137
5.3.1
PyPI—Python包索引 137
5.3.2
源代碼包與構建包 139
5.4 獨立可執行文件 142
5.4.1
獨立可執行文件何時有用 143
5.4.2
常用工具 143
5.4.3
可執行包中Python代碼的安全性 150
5.5 小結 151
第6章 部署代碼 152
6.1 十二要素應用 152
6.2 用Fabric進行自動化部署 154
6.3 你自己的包索引或索引鏡像 158
6.3.1
PyPI鏡像 159
6.3.2
使用包進行部署 160
6.4 常見約定與實踐 168
6.4.1
文件系統層次結構 168
6.4.2
隔離 168
6.4.3
使用進程管理工具 169
6.4.4
應該在用戶空間運行應用代碼 170
6.4.5
使用HTTP反向代理 171
6.4.6
優雅地重新加載進程 171
6.5 代碼檢測與監控 172
6.5.1
記錄錯誤—sentry/raven 173
6.5.2
監控系統與應用指標 175
6.5.3
處理應用日志 177
6.6 小結 181
第7章 使用其他語言開發Python擴展 182
7.1 使用C或者C 編寫擴展 182
7.2 為什么你想用擴展 184
7.2.1
提高關鍵代碼段的性能 185
7.2.2
集成現有的使用不同語言編寫的代碼 185
7.2.3
集成第三方動態庫 185
7.2.4
創建自定義數據類型 186
7.3 編寫擴展 186
7.3.1
純C擴展 187
7.3.2
Cython 201
7.4 挑戰 205
7.4.1
額外的復雜性 205
7.4.2
調試 206
7.5 無擴展的動態庫接口 206
7.5.1
ctypes 207
7.5.2
CFFI 212
7.6 小結 214
第8章 管理代碼 215
8.1 版本控制系統 215
8.1.1
集中式系統 215
8.1.2
分布式系統 217
8.1.3
集中式還是分布式 219
8.1.4
盡可能使用Git 219
8.1.5
Git工作流程與GitHub工作流程 220
8.2 持續的開發過程 223
8.2.1
持續集成 224
8.2.2
持續交付 227
8.2.3
持續部署 227
8.2.4
常用的持續集成工具 228
8.2.5
選擇正確的工具和常見的陷阱 234
8.3 小結 236
第9章 文檔化你的項目 237
9.1
7項技術寫作規則 237
9.1.1
兩步寫作 238
9.1.2
定位讀者 238
9.1.3
使用簡單的風格 239
9.1.4
限制信息范圍 240
9.1.5
使用現實中的代碼示例 240
9.1.6
使用輕量且充分的方法 241
9.1.7
使用模板 241
9.2
reStructuredText入門 242
9.2.1
章節結構 243
9.2.2
列表 245
9.2.3
行內標記 246
9.2.4
文字塊 246
9.2.5
鏈接 247
9.3 構建文檔 248
9.4 構建自己的文檔集 254
9.4.1
構建格局 254
9.4.2
文檔構建與持續集成 259
9.5 小結 260
第10章 測試驅動開發 261
10.1
我不測試 261
10.1.1
測試開發的原則 261
10.1.2
什么樣的測試 265
10.1.3
達式Python標準測試工具 268
10.2
我做測試 273
10.2.1
unittest陷阱 273
10.2.2
unittest的替代品 274
10.2.3
測試覆蓋率 280
10.2.4
仿真與模擬 282
10.2.5
測試環境與依賴兼容性 289
10.2.6
文檔驅動開發 292
10.3
小結 294
第11章 優化——一般原則與分析技術 295
11.1
3個優化規則 295
11.1.1
首先要能工作 295
11.1.2
從用戶的角度考慮 296
11.1.3
保持代碼的可讀性和可維護性 297
11.2
優化策略 297
11.2.1
找到另外的罪魁禍首 297
11.2.2
擴展硬件 298
11.2.3
編寫速度測試 298
11.3
查找瓶頸 299
11.3.1
分析CPU使用情況 299
11.3.2
分析內存使用 307
11.3.3
分析網絡使用情況 315
11.4
小結 316
第12章 優化——一些強大的技術 317
12.1
降低復雜度 318
12.1.1
循環復雜度 319
12.1.2
大O記法 320
12.2
簡化 322
12.3
使用集合模塊 323
12.3.1
deque 324
12.3.2
defaultdict 325
12.3.3
namedtuple 326
12.4
架構體系的權衡 327
12.4.1
使用啟發式和近似算法 327
12.4.2
使用任務隊列和延遲
處理 328
12.4.3
使用概率型數據結構 331
12.5
緩存 331
12.5.1
確定性緩存 332
12.5.2
非確定性緩存 335
12.5.3
緩存服務 336
12.6
小結 338
第13章 并發 339
13.1
為什么需要并發 339
13.2
多線程 340
13.2.1
什么是多線程 340
13.2.2
Python如何處理多線程 341
13.2.3
何時應該使用多線程 342
13.3
多進程 356
13.4
異步編程 364
13.4.1
協同多任務與異步I/O 364
13.4.2
Python中的async和await關鍵字 365
13.4.3
老Python版本中的asyncio 369
13.4.4
異步編程實例 369
13.4.5
使用futures將異步代碼同步化 372
13.5
小結 374
第14章 有用的設計模式 376
14.1
創建型模式 376
14.2
結構型模式 379
14.2.1
適配器 380
14.2.2
代理 394
14.2.3
外觀 395
14.3
行為模式 395
14.3.1
觀察者 396
14.3.2
訪問者 398
14.3.3
模板 400
14.4
小結 403
展開全部
Python高級編程-(第2版) 作者簡介
Micha? Jaworski有著7年Python編程的經驗。他還是graceful的創建者,這是一個構建于falcon之上的REST框架。他曾在不同的公司擔任過多種角色,從一名普通的全棧開發人員到軟件架構師再到一家快節奏創業公司的工程副總裁。他目前是Opera軟件公司TV Store(電視應用商店)團隊的首-席后端工程師。他在設計高性能的分布式服務方面擁有豐富的經驗。他還是一些流行的Python開源項目的活躍貢獻者。
Tarek Ziade?是Mozilla的工程經理,與一個專門用Python為Firefox構建大規模Web應用的團隊合作。他對Python打包做出過貢獻,而且從早期Zope開始就使用過各種不同的Python Web框架。
Tarek還創建了Afpy——法國的Python用戶組,并且用法語寫過兩本關于Python的書。他還在諸如Solutions Linux、PyCon、OSCON和EuroPython等國際活動中做過多次法語演講和教學。