健壯的Python

《健壯的Python》是美國作者派屈克·維亞福爾(Patrick Viafore)撰寫的編程技術類圖書,2023年3月由機械工業出版社出版,ISBN為9787111721444,裝幀為平裝,豆瓣評分8.6分(21人評價)。作者擁有14年關鍵任務軟體開發經驗,現任Kudzera公司負責人。

全書聚焦Python代碼可維護性,通過linter和測試構建代碼庫的安全網。書中系統解析相關實踐,並引入必要機制。第三部分探討模組化方案,第四部分提供技術構建安全網。書中定義代碼健壯性為“在持續變化環境中保持彈性”,倡導代碼應如柳樹般柔韌抗變,強調整潔代碼原則與測試策略相結合,引用C.A.R.Hoare名言指導簡單設計,遵循Python之禪“明顯優於隱蔽”的編寫哲學

基本介紹

  • 中文名:健壯的Python
  • 出版時間:2023年3月1日
  • 出版社:機械工業出版社
  • ISBN:9787111721444
內容簡介,圖書目錄,

內容簡介

你的Python項目是否正在變得越來越龐大?隨著代碼的擴展,調試和維護工作變得更加艱難,你是否感到痛苦?Python是一種容易學習和使用的語言,但這也意味著系統可以迅速發展到無法理解的程度。值得慶幸的是,Python具有幫助開發者克服可維護性困境的功能。
在這本實用的書中,作者Patrick Viafore將告訴你如何大限度地使用 Python的類型系統。你將看到用戶定義的類型(如類和枚舉),以及Python的類型提示系統。你還將學習如何使Python代碼具有可擴展性,以及如何基於一個全面的測試策略構建安全網。利用這些知識和技術,你將編寫更清晰、更易於維護的代碼。
通過學習本書,你將:
*了解為什麼類型在現代開發生態系統中是必不可少的。
*了解類、字典和枚舉等類型選擇是如何反映特定意圖的。
*在不加劇臃腫的情況下使Python代碼在未來可擴展。
*使用流行的Python工具來提高代碼庫的安全性和健壯性。
*評估當前的代碼以檢測常見的可維護性問題。
*通過linter和測試構建代碼庫的安全網。

圖書目錄

第1章 健壯的Python簡介9
1.1 健壯性9
1.2 你的意圖是什麼12
1.3 Python中的意圖示例18
1.3.1 集合18
1.3.2 疊代21
1.3.3 最小驚訝原則22
1.4 小結24
第一部分 為代碼添加類型註解
第2章 Python類型簡介27
2.1 類型中有什麼27
2.1.1 機器表達27
2.1.2 語義表達29
2.2 類型系統32
2.2.1 強類型與弱類型32
2.2.2 動態類型與靜態類型33
2.2.3 鴨子類型34
2.3 小結36
第3章 類型註解37
3.1 什麼是類型註解37
3.2 類型註解的好處41
3.2.1 自動補全41
3.2.2 類型檢查器42
3.2.3 練習:找出bug43
3.3 什麼時候使用類型註解45
3.4 小結46
第4章 約束類型47
4.1 Optional類型48
4.2 Union類型53
4.3 Literal類型57
4.4 Annotated類型58
4.5 NewType58
4.6 Final類型60
4.7 小結61
第5章 集合類型62
5.1 向集合添加類型註解62
5.2 同構集合與異構集合63
5.3 向字典添加類型67
5.4 創建新的集合類型69
5.4.1 泛型69
5.4.2 修改現有的類型71
5.4.3 像ABC一樣簡單74
5.5 小結76
第6章 自定義你的類型檢查器77
6.1 配置類型檢查器77
6.1.1 配置mypy78
6.1.2 mypy報告81
6.1.3 加速mypy82
6.2 其他類型檢查器83
6.2.1 Pyre83
6.2.2 Pyright88
6.3 小結90
第7章 採用類型檢查的實踐91
7.1 權衡利弊92
7.2 早日實現投入產出平衡93
7.2.1 找到你的痛點93
7.2.2 從戰略上選擇目標代碼94
7.2.3 依靠工具95
7.3 小結101
第二部分 定義你自己的類型
第8章 用戶自定義類型:枚舉105
8.1 用戶自定義類型105
8.2 枚舉106
8.2.1 Enum108
8.2.2 何時不使用109
8.3 高級用法109
8.3.1 自動分配值109
8.3.2 Flag111
8.3.3 整數轉換112
8.3.4 唯一性114
8.4 小結115
第9章 用戶自定義類型:數據類116
9.1 數據類實戰116
9.2 用法120
9.2.1 字元串轉換120
9.2.2 相等性121
9.2.3 關聯性比較121
9.2.4 不變性123
9.3 與其他類型的比較124
9.3.1 數據類與字典124
9.3.2 數據類與TypedDict125
9.3.3 數據類與命名元組125
9.4 小結126
第10章 用戶自定義類型:類127
10.1 類的剖析127
10.2 不變數129
10.2.1 避免損壞的不變數131
10.2.2 為什麼不變數是有益的132
10.2.3 溝通不變數134
10.2.4 消費你的類134
10.2.5 維護者怎么辦136
10.3 封裝和維護不變數137
10.3.1 封裝137
10.3.2 保護數據訪問138
10.3.3 操作140
10.4 小結142
第11章 定義你的接口144
11.1 自然接口設計145
11.2 自然的互動148
11.2.1 自然接口實踐149
11.2.2 魔法方法153
11.2.3 上下文管理器155
11.3 小結158
第12章 子類型159
12.1 繼承159
12.2 可替代性163
12.3 設計方面的考慮168
12.4 小結171
第13章 協定172
13.1 類型系統之間的張力172
13.1.1 留空類型或使用Any類型174
13.1.2 使用Union174
13.1.3 使用繼承174
13.1.4 使用mixin176
13.2 協定177
13.3 高級用法179
13.3.1 複合協定179
13.3.2 運行時可檢查協定180
13.3.3 滿足協定的模組180
13.4 小結181
第14章 使用pydantic進行運行時檢查183
14.1 動態配置183
14.2 pydantic189
14.2.1 驗證器190
14.2.2 驗證與解析193
14.3 小結194
第三部分 可擴展的Python
第15章 可擴展性197
15.1 可擴展性是什麼197
15.2 開閉原則203
15.2.1 檢測OCP侵犯203
15.2.2 缺點204
15.3 小結205
第16章 依賴關係206
16.1 關係207
16.2 依賴關係的類型209
16.2.1 物理依賴關係209
16.2.2 邏輯依賴關係212
16.2.3 時間依賴關係213
16.3 可視化你的依賴關係215
16.3.1 可視化包215
16.3.2 可視化導入216
16.3.3 可視化函式調用217
16.3.4 解釋依賴關係圖219
16.4 小結220
第17章 可組合性221
17.1 可組合性介紹221
17.2 策略與機制225
17.3 較小規模的組合228
17.3.1 組合函式228
17.3.2 組合算法231
17.4 小結234
第18章 事件驅動的架構235
18.1 工作原理235
18.2 簡單的事件237
18.2.1 使用訊息代理237
18.2.2 觀察者模式239
18.3 事件流241
18.4 小結243
第19章 可插入的Python245
19.1 模板方法模式246
19.2 策略模式248
19.3 外掛程式式架構250
19.4 小結253
第四部分 構建安全網
第20章 靜態分析257
20.1 lint檢測257
20.1.1 編寫自己的Pylint外掛程式259
20.1.2 分解外掛程式261
20.2 其他靜態分析器263
20.2.1 複雜度檢查器264
20.2.2 安全分析266
20.3 小結267
第21章 測試策略268
21.1 定義測試策略268
21.2 降低測試成本273
21.3 小結282
第22章 驗收測試283
22.1 行為驅動開發284
22.1.1 Gherkin語言284
22.1.2 可執行規範286
22.2 額外的behave特性288
22.2.1 參數化步驟288
22.2.2 表格驅動的需求288
22.2.3 步驟匹配289
22.2.4 定製測試生命周期289
22.2.5 使用標記選擇性地運行測試290
22.2.6 報告生成290
22.3 小結292
第23章 基於屬性的測試293
23.1 用Hypothesis開展基於屬性的測試293
23.1.1 Hypothesis的魔力297
23.1.2 與傳統測試的對比298
23.2 充分利用Hypothesis299
23.2.1 Hypothesis策略299
23.2.2 生成算法300
23.3 小結303
第24章 突變測試305
24.1 什麼是突變測試305
24.2 用mutmut進行突變測試307
24.2.1 修復突變體309
24.2.2 突變測試報告310
24.3 採用突變測試311
24.4 小結314

相關詞條

熱門詞條

聯絡我們