Python 應用開發實戰 Learning Python Application Development

Ninad Sathaye

買這商品的人也買了...

商品描述

Python是使用最多的動態編程語言之一,應用廣泛,學習者眾多。
本書使用一個生動有趣的、基於文本的游戲主題作為講解內容來介紹Python應用開發過程的各個方面。全書共10章,涉及簡單應用開發、模塊化、打包和發布應用的代碼、文檔規範、單元測試、重構、設計模式、性能監測、性能優化、GUI應用、MVC框架等方方面面的軟件開發知識和技能。
本書適合有一定Python語言基礎,想要快速掌握Python項目開發知識、提高Python開發實戰技能的讀者學習參考。

作者簡介

作者:[美]尼納德·薩斯葉(Ninad Sathaye)譯者:包永帥齊兆慧
在Ninad Sathaye的職業生涯中,他有多年使用包括Python和C++在內的多種語言設計和開發性能關鍵應用的經驗。

他曾是半導體行業中的一個軟件架構師,最近又轉入物聯網領域。他擁有機械工程碩士學位。

目錄大綱

第1章開發簡單應用1 
1.1重要提示2 
1.2安裝的先決條件2 
1.2.1安裝Python 3 
1.3本書的主題8 
1.3.1了解本書人物8 
1.4簡單的腳本—獸人之襲
v0.0.1 9 
1.4 .1遊戲簡介—獸人之襲
v0.0.1 10 
1.4.2問題說明10 
1.4.3偽代碼—0.0.1版本10 
1.4.4代碼查看11 
1.4.5運行獸人之襲v0.0.1 14 
1.5使用函數—獸人之襲
v0.0.5 14 
1.5.1重新回顧以前的版本15 
1.5.2有攻擊功能的偽代碼— 
版本0.0.5 17 
1.5.3代碼查看19 
1.5.4運行獸人之襲v0.0.5 21 
1.6使用面向對象編程— 
獸人之襲v1.0.0 22 
1.6.1功能需求的優先度23 
1.6.2問題說明24 
1.6.3重新設計代碼24 
1.6.4描繪整個場景25 
1.6.5代碼查看27 
1.6.6運行獸人之襲v1.0.0 31 
1.7 Python中的抽象基類32
1.7.1練習33 
1.8小結34 
1.8.1對電子書讀者非常重要的
提示34 

第2章異常處理36 
2.1修改獸人之襲v1.0.0 36 
2.1.1問題調試37 
2.1.2 bug修復中…… 38 
2.2異常39 
2.2.1什麼是異常39 
2.2.2最常見的異常39 
2.2.3異常處理40 
2.2.4異常的拋出和再拋出42 
2.2.5 try...except的else 
代碼塊43 
2.2 .6 finally...清理吧44 
2.3回歸遊戲—獸人之襲
v1.1.0 45 
2.3.1準備工作45 
2.3.2增加異常處理代碼46 
2.3.3運行獸人之襲v1.1.0 47 
2.4自定義異常48 
2.4.1準備工作48 
2.4.2自定義異常— 
問題所在49 
2.4.3編寫一個新的異常類50 
2.4.4擴展異常類51 
2.4.5繼承exception類53 
2.5練習55 
2.6小結56 

第3章模塊化、包和部署57 
3.1選擇一種版本控制規約58
3.1.1連續遞增58 
3.1.2使用日期格式59 
3.1.3語義版本控制方案59 
3.2代碼模塊化60 
3.2.1獸人之襲v2.0.0 60 
3.3創建Python包62 
3.3.1從包中錄入63 
3.4在PyPI上發布包64 
3.4.1發行版本準備65 
3.4.2上傳發行版69 
3.4.3一條命令完成所有的
事情73 
3.4.4安裝你自己的發行版73 
3.5使用私有的PyPI倉庫75 
3.5.1步驟1—安裝
pypiserver 75 
3.5.2步驟2—創建一個新的
源代碼發行版75 
3.5.3步驟3—啟動本地
服務器76 
3.5.4步驟4—安裝私有
發行版76 
3.6創建增量發布77 
3.6. 1打包並上傳新版本77 
3.6.2升級已經安裝的版本77 
3.7代碼的版本控制78 
3.7.1 Git資源78 
3.7.2安裝Git 78 
3.7.3配置你的驗證信息79 
3.7.4 Git基礎術語79 
3.7.5創建並使用本地倉庫80
3.8使用Git的GUI客戶端83 
3.9練習84 
3.10小結85 

第4章代碼文檔和最佳實踐86 
4.1編寫代碼文檔87 
4.1.1文檔字符串88 
4.1.2 reStructuredText簡介89 
4.1.3使用RST的文檔
字符串92 
4.1.4文檔字符串格式化風格94 
4.1.5自動生成文檔字符串
stubs 95 
4.1.6使用Sphinx生成文檔97 
4.2 Python編碼標準103 
4.3代碼分析—我們做得
怎麼樣呢105 
4.3.1使用IDE進行代碼
分析105 
4.3.2 Pylint 106 
4.4練習110 
4.5小結110 

第5章單元測試和重構111 
5.1本章的組織方式111 
5.1.1重要說明112 
5.2為何要進行測試112 
5.2.1提出了一個新的需求112 
5.2.2你實現了這個功能113 
5.2.3但是有些事情似乎
不對了…… 114 
5.2.4它需要完全測試115 
5.3單元測試115
5.3.1 Python的unittest 
框架116 
5.4為應用程序編寫單元測試121 
5.4.1創建測試包121 
5.4.2為單元測試創建新
的類122 
5.4.3第1個單元測試— 
受傷方的選擇123 
5.4. 4運行第1個單元測試124 
5.4.5第2個單元測試— 
佔領木屋124 
5.4.6創建自己的測試模塊127 
5.4.7批量執行單元測試127 
5.5使用模擬庫的單元測試128 
5.5.1 Mock的簡介128 
5.5.2讓我們開始Mock吧129 
5.5.3在單元測試中使用Mock 
對象131 
5.5.4使用補丁133 
5.5.5第3個單元測試— 
play方法135 
5.6你的代碼被覆蓋到了嗎139 
5.6 .1解決導入錯誤140 
5.7其他單元測試工具141 
5.7.1 Doctest 141 
5.7.2 Nose 141 
5.7.3 Pytest 142 
5.8重構的前言142 
5.8.1繞個彎路—可測試性
重構144 
5.9重構144
5.9.1什麼是重構145 
5.9.2為什麼要進行重構145 
5.9.3何時進行重構145 
5.9.4如何進行重構146 
5.9.5移動148 
5.10重新審視單元測試150 
5.10.1可測試化重構150 
5.10.2第4個單元測試— 
setup_game_scenario 152 
5.11練習152 
5.11.1重構和重新設計練習153 
5.12小結153 

第6章設計模式154 
6.1設計模式的介紹154 
6.1.1設計模式的分類155 
6.2 Python語言和設計模式156 
6.2.1一級函數157 
6.2.2類作為一級對象157 
6.2.3閉包158 
6.2.4各種特性159 
6.2.5鴨子類型160 
6.3本章餘下內容的結構161 
6.4快進—獸人之襲
v6.0.0 162 
6.5策略模式164 
6.5.1策略場景—跳躍
特性164 
6.5.2策略—主要的問題165 
6.5.3策略—嘗試解決
方案166 
6.5.4策略—重新考慮
設計168 
6.5.5策略方案1— 
傳統方法169 
6.5.6策略方案2— 
Python方法172 
6.6簡單工廠174 
6.6.1簡單工廠場景— 
招募特性174 
6.6.2簡單工廠— 
主要的問題175 
6.6.3簡單工廠—重新
考慮設計176 
6.6.4簡單工廠方案1— 
傳統方法177 
6.6.5簡單工廠方案2— 
Python方法178 
6.7抽象工廠模式180 
6.7.1抽象工廠場景— 
飾品店181 
6.7.2抽象工廠—主要的
問題184 
6.7.3抽象工廠—重新考慮
設計184 
6.7.4抽象工廠方案— 
Python方法186 
6.8適配器模式188 
6.8.1適配器模型—精靈的
遠房親戚189 
6.8.2適配器—主要的
問題189 
6.8.3適配器—嘗試解決
方案190 
6.8.4適配器解決方案— 
Python方法191 
6.9小結194

第7章性能—識別瓶頸195 
7.1三個性能章節的總覽195 
7.1.1更注重運行時的性能195 
7.1.2關於性能的第1個
章節196 
7.1.3關於性能的第2個
章節196 
7.1. 4關於性能的第3個
章節196 
7.1.5看一下應用性能提升196 
7.2遊戲場景—尋找黃金197 
7.2.1頂層算法199 
7.2.2查看最初的代碼200 
7.2.3運行代碼202 
7.3主要的問題203 
7.4識別瓶頸204 
7.4.1衡量執行時間204 
7.4.2監測代碼片段的運行
時間205 
7.4.3代碼分析206 
7.5內存分析212 
7.5.1 memory_profiler包212 
7.6算法效率和復雜度214 
7.6.1算法效率214 
7.6.2算法複雜度214 
7.7大O符號214 
7.7.1大O複雜類215 
7.8小結221 

第8章性能優化1 222 
8.1本章的前提223 
8.2本章的組織方式223
8.3回顧“尋找黃金”的場景224 
8.3.1選擇問題的數據大小224 
8.3.2分析最初的代碼224 
8.4優化“尋找黃金”— 
第1部分225 
8.4.1調整算法—平方根225 
8.4.2跳過點操作符228 
8.4.3使用本地範圍230 
8.5性能優化的一些事項232 
8.5.1列表推導式233 
8.5.2記錄執行時間234 
8.5.3字典推導式235 
8.5.4交換條件塊和for 
循環235 
8.5 .5在循環中使用try語句236 
8.5.6選擇正確的數據結構237 
8.5.7 collections模塊238 
8.5.8生成器和生成器
表達式241 
8.5.9 itertools模塊245 
8.6練習247 
8.7小結247 

第9章性能優化2—NumPy和
並行化248 
9.1本章的先決條件248 
9.2本章的組織方式248 
9.3 NumPy的簡介249 
9.3.1安裝NumPy 250 
9.3.2創建數組對象250 
9.3.3簡單的數組操作251
9.3.4數組切割和索引252 
9.3.5廣播254 
9.3.6其他功能255 
9.3.7從哪裡能獲得更多關於
NumPy的信息262 
9.4優化“尋找黃金”— 
第2部分262 
9.4.1 “尋找黃金”優化— 
優化四262 
9.4.2 “尋找黃金”優化— 
優化五264 
9.5使用multiprocessing模塊的
並行化267 
9.5.1並行化簡介267 
9.5.2全局解釋器鎖268 
9.5.3 multiprocessing模塊268 
9.6 “尋找黃金”程序並行化271 
9.6.1重訪黃金領地271 
9.6.2 “尋找黃金”優化— 
優化六,並行化273 
9.7進一步閱讀277 
9.7.1 JIT編譯器277 
9.8小結278 

第10章簡單的圖形應用程序280 
10.1 GUI框架概述281 
10.1.1 Tkinter 281 
10.1.2 PyQt 281 
10.1.3 PySide 282 
10.1.4 Kivy 282 
10.1.5 wxPython 282
10.2 GUI編程設計注意事項283 
10.2.1了解用戶的需求283 
10.2.2開髮用戶故事283 
10.2.3簡單性和可訪問性283 
10.2.4一致性284 
10.2.5可預測性和熟悉性284 
10.2. 6其他設計考慮284 
10.3事件驅動編程284 
10.3.1事件285 
10.3.2事件處理285 
10.3.3事件循環285 
10.4使用Tkinter進行GUI 
編程286 
10.4.1 Tkinter的文件鏈接286 
10.4.2 Tkinter中的
mainloop( ) 286 
10.4.3簡單GUI應用程序— 
第1步287 
10.4.4簡單GUI應用程序— 
第2步289 
10.4.5 Tkinter中的GUI 
控件290 
10.4.6佈局管理292 
10.4.7 Tkinter中的事件294 
10.4 .8 Tkinter中的事件
處理296 
10.5項目1—獸人之襲
 v10.0.0 298 
10.5.1遊戲場景298 
10.5.2問題聲明298
10.5.3編寫代碼299 
10.5.4運行應用程序305 
10.6 MVC架構306 
10.6.1模型307 
10.6.2視圖307 
10.6.3控制器307 
10.6.4 MVC的好處308 
10.7項目2—獸人之襲
 v10.1.0 308 
10.7.1重新修改HutGame類308 
10.7.2創建MVC類309 
10.7.3 MVC對象間的通信310 
10.7.4查看代碼314 
10.7.5 Model類315 
10.7.6 View類316 
10.7.7運行應用程序317 
10.8測試GUI應用程序317 
10.8.1測試注意事項318 
10.9練習319 
10.10擴展閱讀320 
10.11小結322