Python進階:實際套用開發實戰

《Python進階:實際套用開發實戰》是2022年機械工業出版社出版的圖書。

基本介紹

  • 中文名:Python進階:實際套用開發實戰
  • 出版時間:2022年1月1日
  • 出版社:機械工業出版社
  • ISBN:9787111701040
內容簡介,圖書目錄,

內容簡介

●在介紹Python的一些強大特性時,人們常常編造一些示例,以孤立的示例解釋各種特性。通過設計並構建真實的應用程式,從設計原型一直演示到開發出符合生產質量要求的應用程式,整個過程不只讓你了解各種特性如何工作,還會讓你看到它們如何作為更大的系統設計過程的組成部分集成起來。另外,本書還會提供一些有用的注意項,並推薦一些庫,這些內容是Python大會問答環節的主要關注點。本書還會討論現代Python開發的最佳實踐和技術,幫助你編寫清晰的、易於維護的代碼。
●本書針對的是已經能夠使用Python編寫簡單程式但想要理解什麼時候適合使用高級特性的開發人員,讓他們能夠自如地使用這些高級特性。想要提升自身Python編程水平以及已經具有豐富的經驗但希望了解新版本Python特性的開發人員,都特別適合閱讀本書。
【本書內容】
本書精心挑選了主題,旨在介紹Python編程的各個不同方面。Python社區作為一個整體沒有充分理解或者利用這些方面,而且在指導新人時,不會把它們理所當然地教給新人。這並不是說這些特性一定很複雜,或者很難理解(當然有些特性確實如此),我相信,所有程式設計師都應該熟悉這些特性,即使他們並不會用到這些特性。
●第1章將介紹使用Python編寫簡單程式的不同方式,還會介紹Jupyter記事本以及Python調試器的用法。雖然這兩者都是相對來說為人熟知的工具,但很多人只熟悉其中的一個工具,而不是兩者都能夠熟練使用。本章還會介紹編寫命令行接口的不同方式,以及一些有用的第三方庫,它們支持簡潔的命令行工具開發。
●第2章將介紹幫助識別代碼中的錯誤的工具,例如自動測試和linting工具。無論是編寫大型代碼庫、很少需要編輯的代碼庫,還是要吸收第三方貢獻的代碼庫,這些工具都能夠讓你更容易地寫出讓自己有信心的代碼。這裡介紹的工具都是我推薦的工具,但是,本章的關注點是理解它們的優缺點。你可能已經使用過其中的一個或多個工具,並且對於是否適合使用它們有自己的觀點。本章將幫助你理解權衡點,從而做出明智的決定。
●第3章將介紹Python中的代碼打包和依賴項分發。對於編寫可分發給其他人的應用程式,以及設計能夠可靠工作的部署系統來說,這些都是重要的功能。我們將使用這些功能,把獨立的腳本轉換為可安裝的應用程式。
●第4章將介紹外掛程式架構。這是一種強大的功能。經常可以看到學習外掛程式架構的人使用它,這導致講解Python的人們對於是否講解外掛程式架構持謹慎態度。對於我們的示例,外掛程式架構十分適用。本章還將介紹一些用於命令行工具的高級技術,它們能夠讓調試基於外掛程式的系統變得更加容易。
●第5章將介紹Web接口和編寫複雜函式的技術,如裝飾器和閉包。這些技術在Python中已經是習語,但在其他許多程式語言中很難表達。本章還將介紹如何恰當地使用抽象基類。人們常常不建議使用抽象基類,因為學習抽象基類的人傾向於到處使用它們。在特定場景中,有節制地使用抽象基類是有優勢的,當把抽象基類與第2章介紹的一些工具結合使用時更是如此。
●第6章將用另一個重要組件擴展我們的示例,這個組件就是收集數據的聚合伺服器。本章還將演示Python程式設計師會用到的一些最重要的第三方庫,例如requests庫。
●第7章將介紹Python中的執行緒和異步編程。執行緒常常會導致難以探查的bug。異步代碼能夠用於類似的任務,但許多Python程式設計師還沒有使用過這種習語,因為使用異步編程時,程式的行為與同步編程有很大區別。本章重點討論在真實場景中如何使用並發來實現某個結果,而不只是演示一個簡單的示例,或者演示異步編程的局限性。本章旨在得到能夠在真實場景中使用的代碼,並讓你徹底理解權衡點,而不是進行獨立的技術演示。
●第8章將更加深入地介紹異步編程,講解異步代碼的測試以及一些第三方庫。使用這些庫能夠編寫在異步上下文中處理外部工具(如資料庫)的代碼。本章還將簡要地介紹一些可以用來編寫出色API的高級技術,例如上下文管理器和上下文變數,它們對於異步編程很有幫助。
●第9章返回Jupyter,使用它的一些功能來實現數據可視化和方便的用戶互動。我們將介紹如何在Jupyter記事本中把異步代碼用於小部件,還將介紹疊代器的高級用法和實現複雜數據類型的多種方式。
●第10章將詳細介紹如何讓Python代碼運行得更快,如何使用不同類型的快取,以及這些快取適用的場景。本章還將介紹如何對應用程式中的各個Python函式進行基準測試,以及如何解讀結果以找出速度緩慢的原因。
●第11章將擴展本書前面介紹過的一些概念,以更加優雅地處理錯誤。我們將介紹如何修改外掛程式架構,以便無縫地處理錯誤,同時保留完整的向後兼容性,還將深入介紹如何設計在遇到錯誤時就處理錯誤的過程。
●第12章將使用Python的疊代器和協程來增強我們開發的儀錶板,為它們添加一些功能,這些功能不是實現被動的數據收集,而是主動檢查收集到的數據,從而允許我們構建包含多個步驟的分析流。

圖書目錄

第1章 原型設計和環境1
1.1 Python中的原型設計1
1.1.1 使用REPL設計原型2
1.1.2 使用Python腳本設計原型5
1.1.3 使用腳本和pdb設計原型6
1.1.4 使用Jupyter設計原型9
1.1.5 本章的原型設計11
1.2 環境設定13
1.3 創建新項目14
1.3.1 設計腳本原型15
1.3.2 安裝依賴項18
1.4 導出到.py檔案20
1.5 構建命令行接口22
1.5.1 sys模組和argv23
1.5.2 argparse24
1.5.3 click26
1.6 打破界限28
1.6.1 遠程核心28
1.6.2 開發不能在本地運行的代碼32
1.7 完成後的腳本34
1.8 小結36
更多資源36
●第2章 測試、檢查和linting37
2.1 測試40
2.1.1 何時編寫測試42
2.1.2 創建格式化函式來提高可測試性43
2.1.3 pytest46
2.2 類型檢查56
2.2.1 安裝mypy57
2.2.2 添加類型提示58
2.2.3 子類和繼承60
2.2.4 泛型類型62
2.2.5 調試以及過度使用類型64
2.2.6 何時使用類型,何時避免使用類型66
2.2.7 將類型提示與代碼分離67
2.3 linting68
2.3.1 安裝flake8和black69
2.3.2 修復現有代碼70
2.3.3 自動運行71
2.3.4 拉取時運行73
2.4 小結74
更多資源75
●第3章 打包腳本76
3.1 術語77
3.2 目錄結構77
3.3 安裝腳本和元數據80
3.4 依賴項80
3.5 聲明式配置82
3.5.1 在setup.py中需要避免的事項82
3.5.2 使用setup.cfg86
3.6 自定義索引伺服器88
3.6.1 創建pypiserver90
3.6.2 持久性91
3.6.3 保密性92
3.6.4 完整性92
3.6.5 wheel格式和在安裝時執行代碼93
3.7 使用入口點安裝控制台腳本95
3.8 README、DEVELOP和CHANGES97
3.8.1 Markdown格式97
3.8.2 reStructuredText格式99
3.8.3 README101
3.8.4 CHANGES.md和版本化101
3.9 上游依賴項版本鎖定103
3.9.1 寬鬆鎖定103
3.9.2 嚴格鎖定104
3.9.3 應該使用哪種鎖定方案105
3.10 上傳版本105
3.11 小結107
更多資源107
●第4章 從腳本到框架109
4.1 編寫感測器外掛程式110
4.2 添加新的命令行選項113
4.2.1 子命令113
4.2.2 命令選項116
4.2.3 錯誤處理117
4.2.4 通過實參類型將解析工作
 交給click120
4.2.5 自定義click實參類型121
4.2.6 常用選項123
4.3 允許使用第三方感測器外掛程式124
4.3.1 使用固定名稱檢測外掛程式126
4.3.2 使用入口點檢測外掛程式127
4.3.3 配置檔案129
4.3.4 環境變數132
4.3.5 apd.sensors與類似程式的方法對比133
4.4 小結133
更多資源134
●第5章 其他接口136
5.1 Web微服務136
5.1.1 WSGI137
5.1.2 API設計142
5.1.3 Flask144
5.1.4 Python裝飾器146
5.1.5 測試視圖函式157
5.1.6 部署159
5.2 將軟體作為第三方軟體擴展160
5.2.1 與其他開發人員就簽名達成一致165
5.2.2 抽象基類167
5.2.3 後備策略170
5.2.4 綜合運用174
5.3 修復代碼中的序列化問題176
5.4 版本化API180
5.5 小結183
更多資源183
●第6章 聚合過程185
6.1 cookiecutter185
6.2 創建聚合包189
6.2.1 資料庫類型190
6.2.2 示例192
6.2.3 對象–關係映射器193
6.2.4 版本化資料庫197
6.2.5 載入數據202
6.3 新技術209
6.3.1 資料庫210
6.3.2 自定義特性行為210
6.3.3 生成器210
6.4 小結210
更多資源211
●第7章 並行和異步212
7.1 非阻塞IO213
7.2 多執行緒與多進程218
7.2.1 低級執行緒219
7.2.2 位元組碼222
7.2.3 鎖與死鎖225
7.2.4 避免全局狀態229
7.2.5 其他同步原語234
7.2.6 ProcessPoolExecutor241
7.2.7 使代碼使用多執行緒241
7.3 asyncio242
7.3.1 async def242
7.3.2 await243
7.3.3 async for245
7.3.4 async with249
7.3.5 異步鎖定原語249
7.3.6 使用同步庫251
7.3.7 使代碼異步化252
7.4 比較255
7.5 做出選擇255
7.6 小結257
更多資源258
●第8章 高級asyncio259
8.1 測試異步代碼259
8.1.1 測試代碼260
8.1.2 模擬對象以方便進行單元測試267
8.2 異步資料庫276
8.2.1 經典SQLAlchemy風格277
8.2.2 使用run_in_executor280
8.2.3 查詢數據282
8.2.4 避免複雜查詢284
8.2.5 其他方案293
8.3 異步代碼中的全局變數294
8.4 小結296
更多資源297
●第9章 查看數據298
9.1 查詢函式298
9.1.1 過濾數據303
9.1.2 多層疊代器306
9.1.3 其他過濾器312
9.1.4 測試查詢函式313
9.2 顯示多個感測器316
9.3 處理數據319
9.4 與Jupyter小部件進行互動323
9.4.1 增加嵌套的同步和異步代碼324
9.4.2 進行整理329
9.5 持久端點330
9.6 繪製地圖和地理數據330
9.6.1 新的圖類型333
9.6.2 在apd.aggregation中支持地圖類型的圖335
9.6.3 使用新配置繪製自定義地圖337
9.7 小結339
更多資源340
●第10章 加快速度341
10.1 最佳化函式341
10.1.1 性能分析和執行緒343
10.1.2 解讀profile報表345
10.1.3 其他性能分析器348
10.2 最佳化控制流352
10.2.1 可視化性能分析數據356
10.2.2 快取360
10.3 小結369
更多資源369
●第11章 容錯371
11.1 錯誤處理371
11.1.1 從容器獲取項372
11.1.2 自定義異常377
11.1.3 涉及多個異常的堆疊跟蹤380
11.1.4 測試異常處理383
11.2 警告388
11.3 日誌393
11.3.1 嵌套記錄器394
11.3.2 自定義動作396
11.3.3 記錄配置400
11.3.4 其他處理程式402
11.4 設計時規避問題402
11.5 小結407
更多資源408
●第12章 回調與數據分析409
12.1 生成器的數據流409
12.1.1 使用自己的輸出的生成器411
12.1.2 增強的生成器414
12.1.3 佇列420
12.1.4 選擇控制流422
12.2 動作的結構423
12.2.1 分析協程424
12.2.2 攝入數據429
12.2.3 運行分析進程432
12.3 進程狀態434
12.4 擴展可用的動作439
12.5 小結441
更多資源442
後記443

相關詞條

熱門詞條

聯絡我們