Python代碼整潔之道:編寫優(yōu)雅的代碼
定 價:79 元
叢書名:華章程序員書庫
- 作者:[美] 蘇尼爾·卡皮爾(Sunil Kapil)
- 出版時間:2020/10/1
- ISBN:9787111665878
- 出 版 社:機械工業(yè)出版社
- 中圖法分類:TP311.561
- 頁碼:0
- 紙張:
- 版次:
- 開本:16開
本書首先介紹格式化編碼和代碼記錄以獲得*大可讀性的重要性,使用內置數(shù)據(jù)結構和Python字典提高可維護性,并使用模塊和元類有效地組織代碼。然后深入研究Python語言的新特性,并學習如何有效地利用它們。接下來,將解碼諸如異步編程、Python數(shù)據(jù)類型、類型提示和路徑處理等關鍵概念。學習在Python代碼中調試和執(zhí)行單元測試和集成測試的技巧,以確保代碼可以投入生產(chǎn)。*后介紹用于版本管理、管理實時代碼和智能代碼完成的必要工具。
譯者序
前言
致謝
關于作者
關于技術審校者
第1章 關于Python的思考1
1.1 編寫Python代碼1
1.1.1 命名2
1.1.2 代碼中的表達式和語句5
1.1.3 擁抱Python編寫代碼的方式8
1.2 使用文檔字符串14
1.2.1 模塊級文檔字符串17
1.2.2 使類文檔字符串具有描述性17
1.2.3 函數(shù)文檔字符串18
1.2.4 一些有用的文檔字符串工具19
1.3 編寫Python的控制結構20
1.3.1 使用列表推導20
1.3.2 不要使用復雜的列表推導21
1.3.3 應該使用lambda嗎23
1.3.4 何時使用生成器與何時使用列表推導23
1.3.5 為什么不要在循環(huán)中使用else24
1.3.6 為什么range函數(shù)在Python 3中更好27
1.4 引發(fā)異常28
1.4.1 習慣引發(fā)異常28
1.4.2 使用finally來處理異常30
1.4.3 創(chuàng)建自己的異常類31
1.4.4 只處理特定的異常32
1.4.5 小心第三方的異常34
1.4.6 try最少的代碼塊35
1.5 小結36
第2章 數(shù)據(jù)結構38
2.1 常用數(shù)據(jù)結構38
2.1.1 使用集合38
2.1.2 返回和訪問數(shù)據(jù)時使用namedtuple40
2.1.3 理解str、Unicode和byte43
2.1.4 謹慎使用列表,優(yōu)先使用生成器44
2.1.5 使用zip處理列表47
2.1.6 使用Python的內置函數(shù)48
2.2 使用字典50
2.2.1 何時使用字典與何時使用其他數(shù)據(jù)結構51
2.2.2 collections51
2.2.3 有序字典、默認字典、普通字典54
2.2.4 使用字典的switch語句55
2.2.5 合并兩個字典的方法56
2.2.6 優(yōu)雅地打印字典57
2.3 小結58
第3章 編寫更好的函數(shù)和類59
3.1 函數(shù)59
3.1.1 編寫小函數(shù)60
3.1.2 返回生成器61
3.1.3 引發(fā)異常替代返回None63
3.1.4 使用默認參數(shù)和關鍵字參數(shù)64
3.1.5 不要顯式地返回None66
3.1.6 編寫函數(shù)時注意防御68
3.1.7 單獨使用lambda表達式70
3.2 類72
3.2.1 類的大小72
3.2.2 類結構73
3.2.3 正確地使用@property75
3.2.4 什么時候使用靜態(tài)方法77
3.2.5 繼承抽象類79
3.2.6 使用@classmethod來訪問類的狀態(tài)80
3.2.7 使用公有屬性代替私有屬性81
3.3 小結83
第4章 使用模塊和元類84
4.1 模塊和元類84
4.2 如何使用模塊組織代碼86
4.3 使用__init__文件88
4.4 以正確的方式從模塊導入函數(shù)和類90
4.5 何時使用元類92
4.6 使用__new__方法驗證子類93
4.7 __slots__的用途95
4.8 使用元類改變類的行為98
4.9 Python描述符100
4.10 小結102
第5章 裝飾器和上下文管理器104
5.1 裝飾器105
5.1.1 裝飾器及其作用105
5.1.2 理解裝飾器106
5.1.3 使用裝飾器更改行為108
5.1.4 同時使用多個裝飾器110
5.1.5 使用帶參數(shù)的裝飾器111
5.1.6 考慮使用裝飾器庫112
5.1.7 用于維護狀態(tài)和驗證參數(shù)的類裝飾器114
5.2 上下文管理器117
5.2.1 上下文管理器及用途117
5.2.2 理解上下文管理器119
5.2.3 使用contextlib創(chuàng)建上下文管理器120
5.2.4 上下文管理器的示例121
5.3 小結124
第6章 生成器與迭代器125
6.1 使用生成器和迭代器125
6.1.1 理解迭代器125
6.1.2 什么是生成器128
6.1.3 何時使用迭代器129
6.1.4 使用itertools130
6.1.5 為什么生成器非常有用132
6.1.6 列表推導和迭代器133
6.2 使用yield關鍵字133
6.2.1 yield from135
6.2.2 yield相比數(shù)據(jù)結構更快135
6.3 小結136
第7章 使用Python的新特性137
7.1 異步編程137
7.1.1 Python中的async138
7.1.2 asyncio是如何工作的141
7.1.3 異步生成器151
7.2 類型標注159
7.2.1 Python中的類型160
7.2.2 typing模塊160
7.2.3 類型檢查會影響性能嗎163
7.2.4 類型標注如何幫助編寫更好的代碼163
7.2.5 typing的陷阱163
7.3 super()方法164
7.4 類型提示164
7.5 使用pathlib處理路徑164
7.6 print()現(xiàn)在是一個函數(shù)165
7.7 f-string165
7.8 關鍵字參數(shù)166
7.9 保持字典數(shù)據(jù)的順序166
7.10 迭代解包166
7.11 小結167
第8章 調試和測試Python代碼168
8.1 調試168
8.1.1 調試工具169
8.1.2 breakpoint172
8.1.3 在產(chǎn)品代碼中使用logging模塊替代print172
8.1.4 使用metrics庫來分析性能瓶頸177
8.1.5 IPython有什么幫助178
8.2 測試179
8.2.1 測試非常重要179
8.2.2 Pytest和UnitTest180
8.2.3 屬性測試184
8.2.4 生成測試報告184
8.2.5 自動化單元測試185
8.2.6 讓代碼為生產(chǎn)做好準備186
8.2.7 在Python中執(zhí)行單元和集成測試186
8.3 小結189
附錄 一些很棒的Python工具190