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