●前言
致謝
審校者簡介
第1章 原型設計和環境
1.1 Python中的原型設計
1.1.1 使用REPL設計原型
1.1.2 使用Python腳本設計原型
1.1.3 使用腳本和pdb設計原型
1.1.4 使用Jupyter設計原型
1.1.5 本章的原型設計
1.2 環境設置
1.3 創建新項目
1.3.1 設計腳本原型
1.3.2 安裝依賴項
1.4 導出到.py文件
1.5 構建命令行接口
1.5.1 sys模塊和argv
1.5.2 argparse
1.5.3 click
1.6 打破界限
1.6.1 遠程內核
1.6.2 開發不能在本地運行的代碼
1.7 完成後的腳本
1.8 小結
更多資源
第2章 測試、檢查和linting
2.1 測試
2.1.1 何時編寫測試
2.1.2 創建格式化函數來提高可測試性
2.1.3 pytest
2.2 類型檢查
2.2.1 安裝mypy
2.2.2 添加類型提示
2.2.3 子類和繼承
2.2.4 泛型類型
2.2.5 調試以及過度使用類型
2.2.6 何時使用類型,何時避免使用類型
2.2.7 將類型提示與代碼分離
2.3 linting
2.3.1 安裝flake8和black
2.3.2 修復現有代碼
2.3.3 自動運行
2.3.4 拉取時運行
2.4 小結
更多資源
第3章 打包腳本
3.1 術語
3.2 目錄結構
3.3 安裝數據
3.4 依賴項
3.5 聲明式配置
3.5.1 在setup.py中需要避免的事項
3.5.2 使用setup.cfg
3.6 自定義索引服務器
3.6.1 創建pypiserver
3.6.2 持久性
3.6.3 保密性
3.6.4 完整性
3.6.5 wheel格式和在安裝時執行代碼
3.7 使用入口點安裝控制臺腳本
3.8 README、DEVELOP和CHANGES
3.8.1 Markdown格式
3.8.2 reStructuredText格式
3.8.3 README
3.8.4 CHANGES.md和版本化
3.9 上遊依賴項版本鎖定
3.9.1 寬松鎖定
3.9.2 嚴格鎖定
3.9.3 應該使用哪種鎖定方案
3.10 上傳版本
3.11 小結
更多資源
第4章 從腳本到框架
4.1 編寫傳感器插件
4.2 添加新的命令行選項
4.2.1 子命令
4.2.2 命令選項
4.2.3 錯誤處理
4.2.4 通過實參類型將解析工作
交給click
4.2.5 自定義click實參類型
4.2.6 常用選項
4.3 允許使用第三方傳感器插件
4.3.1 使用固定名稱檢測插件
4.3.2 使用入口點檢測插件
4.3.3 配置文件
4.3.4 環境變量
4.3.5 apd.sensors與類似程序的方法對比
4.4 小結
更多資源
第5章 其他接口
5.1 Web微服務
5.1.1 WSGI
5.1.2 API設計
5.1.3 Flask
5.1.4 Python裝飾器
5.1.5 測試視圖函數
5.1.6 部署
5.2 將軟件作為第三方軟件擴展
5.2.1 與其他開發人員就簽名達成一致
5.2.2 抽像基類
5.2.3 後備策略
5.2.4 綜合運用
5.3 修復代碼中的序列化問題
5.4 版本化API
5.5 小結
更多資源
第6章 聚合過程
6.1 cookiecutter
6.2 創建聚合包
6.2.1 數據庫類型
6.2.2 示例
6.2.3 對像–關繫映射器
6.2.4 版本化數據庫
6.2.5 加載數據
6.3 新技術
6.3.1 數據庫
6.3.2 自定義特性行為
6.3.3 生成器
6.4 小結
更多資源
第7章 並行和異步
7.1 非阻塞IO
7.2 多線程與多進程
7.2.1 低級線程
7.2.2 字節碼
7.2.3 鎖與死鎖
7.2.4 避免全局狀態
7.2.5 其他同步原語
7.2.6 ProcessPoolExecutor
7.2.7 使代碼使用多線程
7.3 asyncio
7.3.1 async def
7.3.2 await
7.3.3 async for
7.3.4 async with
7.3.5 異步鎖定原語
7.3.6 使用同步庫
7.3.7 使代碼異步化
7.4 比較
7.5 做出選擇
7.6 小結
更多資源
第8章 高級asyncio
8.1 測試異步代碼
8.1.1 測試代碼
8.1.2 模擬對像以方便測試
8.2 異步數據庫
8.2.1 經典SQLAlchemy風格
8.2.2 使用run_in_executor
8.2.3 查詢數據
8.2.4 避免復雜查詢
8.2.5 其他方案
8.3 異步代碼中的全局變量
8.4 小結
更多資源
第9章 查看數據
第10章 加快速度
第11章 容錯
第12章 回調與數據分析