Python從小白到大牛

關東升

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

商品描述

本書是一部系統論述 Python編程語言、 OOP編程思想以及函數式編程思想的立體化教程(含圖書、答疑服務、教學課件、源代碼及視頻教程)。全書共分為四篇:第一篇Python基礎(第1章~第8章),第二篇Python進階(第9章~第15章),第三篇Python高級實用庫與框架(第16章~第20章),第四篇項目實戰(第21章~第24章)。主要內容包括開篇綜述、搭建開發環境、第一個Python程序、Python語法基礎、 Python編碼規範、數據類型、運算符、控制語句、數據結構、函數式編程、面向對象編程、異常處理、常用模塊、正則表達式、文件操作與管理、數據交換格式、數據庫編程、網絡編程、 wxPython圖形用戶界面編程、Python多線程編程、項目實戰1 網絡爬蟲與爬取股票數據、項目實戰2 數據可視化與股票數據分析、項目實戰3 PetStore寵物商店項目、項目實戰4 開發Python版QQ2006聊天工具。
為便於讀者高效學習,快速掌握 Python編程方法,本書作者精心製作了完整的教學課件、完整的源代碼與豐富的配套視頻教程,並提供在線答疑服務。

作者簡介

作者:關東昇

關東昇:一個在IT領域摸爬滾打20多年的老程序員、培訓師、作者。精通多種IT技術。參與設計和開發北京市公交一卡通大型項目,開發國家農產品追溯系統、金融系統微博等移動客戶端項目,並在App Store發布多款遊戲和應用軟件。近期為中國移動、中國聯通、南方航空、中石油、工商銀行、平安銀行和天津港務局等企事業單位授課。著有《iOS開髮指南》《從零開始學Swift》《Android網絡遊戲開發實戰》《Cocos2d-x實戰》系列和《Kotlin從小白到大牛》等40多本計算機書籍。

目錄大綱

推薦序.1 
前言.3 
本書配套資源.5 
本書學習路線圖7 

第一篇Python基礎
第1章開篇綜述2 

1.1 Python語言歷史3 

1.2 Python語言設計哲學——Python之禪. 3 

1.3 Python語言特點4 

1.4 Python語言應用前景. 5 

1.5如何獲得幫助. 6 
第2章搭建開發環境7 

2.1搭建Python環境7 

2.2 PyCharm開發工具. 9 

2.2.1下載和安裝. 10 

2.2.2設置Python解釋器11 

2.3 Eclipse+PyDev開發工具12 

2.3.1 Eclipse下載和安裝. 13 

2.3.2安裝PyDev插件. 15 

2.3.3設置Python解釋器16 

2.3.4設置UTF-8編碼. 17 
2.4 Visual Studio Code開發工具18 
2.5文本編輯工具. 21 
本章小結. 21 

第3章第一個Python程序22 

3.1使用Python Shell實現. 22 

3.2使用PyCharm實現24

3.2.1創建項目. 24 

3.2.2創建Python代碼文件. 25 

3.2.3編寫代碼. 26 

3.2.4運行程序. 26 

3.3使用Eclipse+PyDev插件實現. 27 

3.3.1創建項目. 27 

3.3.2創建Python代碼文件. 27 

3.3.3運行程序. 28 

3.4使用Visual Studio Code實現. 29 

3.4.1創建Python代碼文件. 29 

3.4.2運行程序. 30 

3.5文本編輯工具+Python解釋器實現31 

3.5.1編寫代碼. 31 

3.5.2運行程序. 32 
3.6代碼解釋32 
本章小結. 33 

第4章Python語法基礎34 

4.1標識符和關鍵字. 34 

4.1.1標識符34 

4.1.2關鍵字34 

4.2變量和常量35 

4.2.1變量35 

4.2.2常量35 

4.3註釋. 36 

4.4語句. 36 

4.5模塊. 37 

4.6包. 39 

4.6.1創建包39 
4.6.2導入包39
本章小結. 40 

第5章Python編碼規範41 

5.1命名規範41 

5.2註釋規範42 

5.2.1文件註釋. 42 

5.2.2文檔註釋. 42 

5.2.3代碼註釋. 44 

5.2.4使用TODO註釋. 45 

5.3導入規範46 

5.4代碼排版47 

5.4.1空行47 

5.4.2空格48 

5.4.3縮進49 

5.4.4斷行49 
本章小結. 50 

第6章數據類型. 51 

6.1數字類型51 

6.1.1整數類型. 51 

6.1.2浮點類型. 52 

6.1.3複數類型. 52 

6.1.4布爾類型. 52 

6.2數字類型相互轉換. 53 

6.2.1隱式類型轉換. 53 

6.2.2顯式類型轉換. 54 

6.3字符串類型54 

6.3.1字符串表示方式54 

6.3.2字符串格式化. 57 

6.3.3字符串查找. 58 
6.3.4字符串與數字相互轉換. 60 
本章小結. 61 

第7章運算符. 62

7.1算術運算符62 

7.1.1一元運算符. 62 

7.1.2二元運算符. 62 

7.2關係運算符64 

7.3邏輯運算符65 

7.4位運算符66 

7.5賦值運算符68 

7.6其他運算符69 

7.6.1同一性測試運算符69 

7.6.2成員測試運算符71 
7.7運算符優先級. 71 
本章小結. 72 

第8章控制語句. 73 

8.1分支語句73 

8.1.1 if結構. 73 

8.1.2 if-else結構74 

8.1.3 elif結構. 75 

8.1.4三元運算符替代品——條件表達式75 

8.2循環語句76 

8.2.1 while語句. 76 

8.2.2 for語句. 77 

8.3跳轉語句78 

8.3.1 break語句. 78 

8.3.2 continue語句79 

8.3.3 while和for中的else語句79 

8.4使用範圍80 
本章小結. 81 


第二篇Python進階
第9章數據結構. 84 

9.1元組. 84

9.1.1序列84 

9.1.2創建元組. 87 

9.1.3訪問元組. 88 

9.1.4遍曆元組. 88 

9.2列表. 89 

9.2.1列表創建. 89 

9.2.2追加元素. 90 

9.2.3插入元素. 91 

9.2.4替換元素. 91 

9.2.5刪除元素. 91 

9.2.6其他常用方法. 92 

9.2.7列表推導式. 93 

9.3集合. 94 

9.3.1創建可變集合. 94 

9.3.2修改可變集合. 95 

9.3.3遍歷集合. 95 

9.3.4不可變集合. 96 

9.3.5集合推導式. 97 

9.4字典. 97 

9.4.1創建字典. 98 

9.4.2修改字典. 99 

9.4.3訪問字典. 100 

9.4.4遍歷字典. 101 
9.4.5字典推導式. 101 
本章小結. 102 

第10章函數式編程. 103 

10.1定義函數103 

10.2函數參數104 

10.2.1使用關鍵字參數調用函數. 104 

10.2.2參數默認值. 104

10.2.3可變參數. 105 

10.3函數返回值106 

10.3.1無返回值函數106 

10.3.2多返回值函數107 

10.4函數變量作用域. 108 

10.5生成器109 

10.6嵌套函數.111 

10.7函數式編程基礎. 112 

10.7.1函數類型. 112 

10.7.2 Lambda表達式. 113 
10.7.3三大基礎函數114 
本章小結. 115 

第11章面向對象編程116 

11.1面向對象概述. 116 

11.2面向對像三個基本特性116 

11.2.1封裝性. 116 

11.2.2繼承性. 116 

11.2.3多態性. 117 

11.3類和對象117 

11.3.1定義類. 117 

11.3.2創建和使用對象117 

11.3.3實例變量. 118 

11.3.4類變量. 119 

11.3.5構造方法. 120 

11.3.6實例方法. 121 

11.3.7類方法. 122 

11.3.8靜態方法. 123 

11.4封裝性123

11.4.1私有變量. 123 

11.4.2私有方法. 124 

11.4.3定義屬性. 125 

11.5繼承性127 

11.5.1繼承概念. 127 

11.5.2重寫方法. 128 

11.5.3多繼承. 128 

11.6多態性129 

11.6.1多態概念. 130 

11.6.2類型檢查. 131 

11.6.3鴨子類型. 131 

11.7 Python根類——object 132 

11.7.1 __str__()方法133 

11.7.2對像比較方法133 

11.8枚舉類134 

11.8.1定義枚舉類. 134 

11.8.2限制枚舉類. 135 
11.8.3使用枚舉類. 135 
本章小結. 136 

第12章異常處理. 137 

12.1異常問題舉例. 137 

12.2異常類繼承層次. 138 

12.3常見異常139 

12.3.1 AttributeError異常139 

12.3.2 OSError異常. 140 

12.3.3 IndexError異常. 140 

12.3.4 KeyError異常. 141

12.3.5 NameError異常141 

12.3.6 TypeError異常141 

12.3.7 ValueError異常. 142 

12.4捕獲異常142 

12.4.1 try-except語句142 

12.4.2多except代碼塊. 143 

12.4.3 try-except語句嵌套145 

12.4.4多重異常捕獲146 

12.5異常堆棧跟踪. 147 

12.6釋放資源148 

12.6.1 finally代碼塊148 

12.6.2 else代碼塊149 

12.6.3 with as代碼塊自動資源管理. 150 
12.7自定義異常類. 151 
12.8顯式拋出異常. 151 
本章小結. 152 

第13章常用模塊. 153 

13.1 math模塊. 153 

13.1.1舍入函數. 153 

13.1.2冪和對數函數154 

13.1.3三角函數. 154 

13.2 random模塊. 155 

13.3 datetime模塊. 156 

13.3.1 datetime、date和time類157 

13.3.2日期時間計算160

13.3.3日期時間格式化和解析. 160 

13.3.4時區162 

13.4 logging日誌模塊163 

13.4.1日誌級別. 163 

13.4.2日誌信息格式化165 

13.4.3日誌重定位. 166 
13.4.4使用配置文件166 
本章小結. 168 

第14章正則表達式. 169 

14.1正則表達式字符串. 169 

14.1.1元字符. 169 

14.1.2字符轉義. 170 

14.1.3開始與結束字符170 

14.2字符類171 

14.2. 1定義字符類. 171 

14.2.2字符類取反. 172 

14.2.3區間172 

14.2.4預定義字符類173 

14.3量詞174 

14.3.1量詞的使用. 174 

14.3.2貪婪量詞和懶惰量詞175 

14.4分組176 

14.4.1分組的使用. 176 

14.4.2分組命名. 177 

14.4.3反向引用分組178 

14.4.4非捕獲分組. 179 

14.5 re模塊180 

14.5.1 search()和match()函數180

14.5.2 findall()和finditer()函數. 181 

14.5.3字符串分割. 182 

14.5.4字符串替換. 182 

14.6編譯正則表達式. 183 

14.6.1已編譯正則表達式對象. 184 
14.6.2編譯標誌. 185 
本章小結. 188 

第15章文件操作與管理189 

15.1文件操作189 

15.1.1打開文件. 189 

15.1.2關閉文件. 191 

15.1.3文本文件讀寫192 

15.1.4二進製文件讀寫193 

15.2 os模塊. 193 

15.3 os.path模塊194 
本章小結. 196 

第三篇Python高級實用庫與框架
第16章數據交換格式. 198 

16.1 CSV數據交換格式. 199 

16.1.1 reader()函數. 199 

16.1. 2 writer()函數200 

16.2 XML數據交換格式201 

16.2.1 XML文檔結構201 

16.2.2解析XML文檔. 203 
XPath 205 

16.2.3 
16.3 JSON數據交換格式. 207

16.3.1 JSON文檔結構. 207 

16.3.2 JSON數據編碼. 208 

16.3.3 JSON數據解碼. 210 

16.4配置文件212 

16.4.1配置文件結構212 

16.4.2讀取配置文件212 

16.4.3寫入配置文件214 
本章小結. 214 

第17章數據庫編程. 215 

17.1數據持久化技術概述215 

17.2 MySQL數據庫管理系統215 

17.2.1數據庫安裝與配置216 

17.2.2連接MySQL服務器. 220 

17.2.3常見的管理命令221 
Python DB-API. 224 

17.3 
17.3.1建立數據連接225 

17.3.2創建游標. 226 

17.4案例:MySQL數據庫CRUD操作227 

17.4.1安裝PyMySQL模塊. 227 

17.4.2數據庫編程的一般過程. 228 

17.4.3數據查詢操作228 

17.4.4數據修改操作231 

17.5 NoSQL數據存儲234 

17.5.1 dbm數據庫的打開和關閉. 234 

17.5.2 dbm數據存儲. 234 
本章小結. 235
第18章網絡編程. 236 

18.1網絡基礎236 

18.1.1網絡結構. 236 

18.1.2 TCP/IP協議237 

18.1.3 IP地址237 

18.1.4端口238 

18.2 TCP Socket低層次網絡編程238 

18.2.1 TCP Socket通信概述238 

18.2.2 TCP Socket通信過程238 

18.2.3 TCP Socket編程API 239 

18.2.4案例:簡單聊天工具. 240 

18.2.5案例:文件上傳工具. 242 

18.3 UDP Socket低層次網絡編程243 

18.3.1 UDP Socket編程API 243 

18.3.2案例:簡單聊天工具. 244 

18.3.3案例:文件上傳工具. 245 

18.4訪問互聯網資源. 247 

18.4.1 URL概念247 

18.4.2 HTTP/HTTPS協議. 247 

18.4.3使用urllib庫248 

18.4.4發送GET請求248 

18.4.5發送POST請求249 

18.4.6實例:Downloader 250 
本章小結. 250 
第19章wxPython圖形用戶界面編程. 251

19.1 Python圖形用戶界面開發工具包. 251 

19.2 wxPython安裝. 251 

19.3 wxPython基礎. 252 

19.3.1 wxPython類層次結構. 252 

19.3.2第一個wxPython程序253 

19.3.3 wxPython界面構建層次結構256 

19.4事件處理257 

19.4.1一對一事件處理257 

19.4.2一對多事件處理258 

19.4.3示例:鼠標事件處理. 259 

19.5佈局管理260 

19.5.1 Box佈局器. 261 

19.5.2 StaticBox佈局264 

19.5.3 Grid佈局265 

19.5.4 FlexGrid佈局266 

19.6 wxPython控件. 268 

19.6.1靜態文本和按鈕268 

19.6.2文本輸入控件269 

19.6.3複選框和單選按鈕270 

19.6.4下拉列表. 272 

19.6.5列表274 

19.6.6靜態圖片控件275 

19.7高級窗口277 

19.7.1分隔窗口. 277 

19.7.2使用樹. 278 

19.7.3使用網格. 281

19.8使用菜單284 

19.9使用工具欄286 
本章小結. 288 

第20章Python多線程編程289 

20.1基礎知識289 

20.1.1進程289 

20.1.2線程290 

20.2 threading模塊290 

20.3創建線程291 

20.3.1自定義函數作為線程體. 291 

20.3.2繼承Thread線程類實現線程體293 

20.4線程管理294 

20.4.1等待線程結束294 

20.4.2線程停止. 296 

20.5線程安全297 

20.5.1臨界資源問題297 

20.5.2多線程同步. 299 

20.6線程間通信301 

20.6.1使用Condition實現線程間通信301 

20.6.2使用Event實現線程間通信305 
本章小結. 306 


第四篇項目實戰
第21章項目實戰1:網絡爬蟲與爬取股票數據308 

21.1網絡爬蟲技術概述. 308 

21.1.1網絡通信技術308 

21.1.2多線程技術. 308 

21.1.3數據交換技術308

21.1.4 Web前端技術. 309 

21.1.5數據分析技術310 

21.1.6數據存儲技術311 

21.2爬取數據311 

21.2.1網頁中靜態和動態數據. 311 

21.2.2使用urllib爬取數據. 312 

21.2. 3使用Selenium爬取數據. 316 

21.3分析數據319 

21.3.1使用正則表達式319 

21.3.2使用BeautifulSoup庫. 321 

21.4項目實戰:爬取納斯達克股票數據323 

21.4.1爬取數據. 323 

21.4 .2檢測數據是否更新323 

21.4.3分析數據. 326 

21.4.4保存數據到數據庫327 

21.4.5爬蟲工作計劃任務330 
第22章項目實戰2:數據可視化與股票數據分析334 

22.1使用Matplotlib繪製圖表. 334 

22.1.1安裝Matplotlib . 334 

22.1.2圖表基本構成要素335 

22.1.3繪製折線圖. 336 

22.1.4繪製柱狀圖. 337 

22.1.5繪製餅狀圖. 338 

22.1.6繪製散點圖. 339 

22.1.7繪製子圖表. 340

22.2項目實戰:納斯達克股票數據分析343 

22.2.1從數據庫提取股票數據. 343 

22.2.2繪製股票成交量折線圖. 344 

22.2.3繪製股票OHLC柱狀圖345 

22.2.4繪製股票K線圖. 348 
第23章項目實戰3:PetStore寵物商店項目352 

23.1系統分析與設計. 352 

23.1.1項目概述. 352 

23.1.2需求分析. 353 

23.1.3原型設計. 353 

23.1.4數據庫設計. 355 

23.1 .5架構設計. 357 

23.1.6系統設計. 357 

23.2任務1:創建數據庫. 359 

23.2.1迭代1.1:安裝和配置MySQL數據庫. 359 

23.2.2迭代1.2:編寫數據庫DDL腳本359 

23.2.3迭代1.3 :插入初始數據到數據庫360 

23.3任務2:初始化項目. 360 

23.3.1迭代2.1:添加資源圖片. 361 

23.3.2迭代2.2:添加包361 

23.4任務3:編寫數據持久層代碼361 

23.4.1迭代3.1 :數據庫配置文件. 361 

23.4.2迭代3.2:編寫DAO基類361

23.4.3迭代3.3:用戶管理DAO . 362 

23.4.4迭代3.4:商品管理DAO . 363 

23.4.5迭代3.5:訂單管理DAO . 366 

23.4.6迭代3.6:訂單明細管理DAO 367 

23.5任務4:編寫表示層代碼. 368 

23.5.1迭代4.1:編寫啟動模塊. 368 

23.5.2迭代4.2:編寫自定義窗口類——MyFrame . 368 

23.5.3迭代4.3:用戶登錄窗口369 

23.5.4迭代4.4:商品列表窗口. 372 

23.5.5迭代4.5:商品購物車窗口. 379 

23.6任務5:發布可執行文件. 386 

23.6.1迭代5.1:處理TODO任務386 

23.6.2迭代5.2:發佈為可執行文件386 
第24章項目實戰4:開發Python版QQ2006聊天工具. 390 

24.1系統分析與設計. 390 

24.1.1項目概述. 390 

24.1.2需求分析. 390 

24.1.3原型設計. 392 

24.1.4數據庫設計. 393 

24.1.5網絡拓撲圖. 394 

24.1.6系統設計. 395 

24.2任務1:創建服務器端數據庫395

24.2.1迭代1.1:安裝和配置MySQL數據庫. 395 

24.2.2迭代1.2:編寫數據庫DDL腳本395 

24.2.3迭代1.3:插入初始數據到數據庫396 

24.3任務2:初始化項目. 397 

24.3.1迭代2.1:添加資源圖片. 397 

24.3.2迭代2.2:添加包397 

24.4任務3:編寫服務器端數據持久層. 397 

24.4.1迭代3.1:數據庫配置文件. 397 

24.4.2迭代3.2:編寫base_dao模塊397 

24.4.3迭代3.3:編寫用戶管理DAO類. 398 

24.5任務4:客戶端UI實現. 400 

24.5.1迭代4.1:編寫my_frame模塊400 

24.5.2迭代4.2:登錄窗口實現401 

24.5.3迭代4.3:好友列表窗口實現404 

24.5.4迭代4.4:聊天窗口實現. 407 

24.6任務5:用戶登錄過程實現409 

24.6.1迭代5.1:客戶端啟動. 409 

24.6.2迭代5.2:客戶端登錄編程. 410 

24.6.3迭代5.3:服務器端啟動. 412 

24.6.4迭代5.4:服務器端驗證編程413 

24.7任務6:刷新好友列表. 415

24.7.1迭代6.1:刷新好友列表服務器端編程. 415 

24.7.2迭代6.2:刷新好友列表客戶端編程416 

24.8任務7:聊天過程實現. 419 

24.8.1迭代7.1:客戶端用戶1向服務器發送消息. 420 

24.8.2迭代7.2:服務器端接收用戶1消息與轉發給用戶3消息. 421 

24.8.3迭代7.3:客戶端用戶3接收用戶1消息. 422 

24.9任務8:用戶下線423 

24.9.1迭代8.1:客戶端編程. 424 

24.9.2迭代8.2:服務器端編程. 425