瘋狂Python講義(5周年紀念版) ( 簡體 字) |
作者:李剛 | 類別:1. -> 程式設計 -> Python |
譯者: |
出版社:電子工業出版社 | 3dWoo書號: 56198 詢問書籍請說出此書號!【缺書】 NT售價: 515 元 |
出版日:1/1/2023 |
頁數:636 |
光碟數:0 |
|
站長推薦: |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787121447525 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言:創作本書純屬偶然,起因是我兒子想學編程。當他想報編程興趣班時,居然沒報上、滿額了,而他是一個對生活充滿好奇的小孩,望著他滿是失落的眼睛,我想不如我來教吧,畢竟我曾經教了那么多別人的孩子。
我的想法是:挑一門上手足夠容易的語言來教,畢竟他只是一個8歲的小孩。首先排除了Java和C,雖然我自己用這兩種語言比較多,但對于小孩來說,上手它們顯得有些枯燥;也考慮過Swift或Kotlin,能迅速帶著做點手機小游戲比較酷,后來又覺得搭建運行環境有點費事;還是選一種能解釋執行的腳本語言吧,我想到了Python或Ruby,后來又了解到那個興趣班教的就是Python,那就選Python吧。
于是,他開始了自己的Python學習之旅。而我完全被困住了:每當他遇到一點問題就要來問我。這肯定不行,得找本書讓他自己看,這樣他就不用來煩我了。我是一個非常挑剔的人,找了不少書,卻發現很少有合適的——有些書上手簡單,但完全沒有按照Python本身的知識體系講解,單純地為了簡單而簡單;有些書略微系統一些,卻講得晦澀難懂。典型來說,僅僅一個變量的概念,幾乎沒有一本書能通俗地講明白。實際上,初學者并不需要知道變量的概念定義,他只要把變量當成一個小的“容器”,懂得對變量賦值就是把東西“裝入”變量即可。那么我還是自己寫一本吧,畢竟我曾經為別人寫了那么多書。
創作這本書時,我有兩點考慮。
1. 講解要盡量通俗,避免搞那些晦澀的概念
編程,首要的是能動手編,讓簡單的程序跑起來。動手編得多了,那些概念的意義自然就浮現出來了。就像一個外星人來到地球,從未見過桌子,找個人一直給他講桌子的概念,要他務必先理解桌子的概念,外星人的感覺一定是非常困惑;嘗試用不同的方法:找一堆桌子放在一起,一張桌子、一張桌子給他看,讓他在桌子上寫字、用電腦、吃飯,甚至把桌子拆開給他看,相信外星人很快就能理解“什么是桌子”了。對于編程初學者而言,他們何嘗不是剛來到地球的外星人?
2. 知識體系要完善,而且遵循Python內在的邏輯
一直以來,我寫的書通常比較厚、內容也比較多。這和我挑剔的個性有關:既然做一件事情,當然要盡力做好它;否則干脆別做。一門工業級的編程語言,它不是玩具,它本身有那么多的知識點。不管你學還是不學,編程語言本身的內容就在那里!不管作者寫還是不寫,編程語言本身的內容就在那里。我寫書總會盡量做到“夠用”,起碼認真學完這本書之后,不會隨便遇到一個編程問題就只能問百度。
既要有完備的知識體系,又要詳細講透這些內容,書的篇幅自然就多了。同樣的知識內容,一本厚厚的、講解細致的圖書,和一本薄薄的、浮光掠影的圖書,哪本更容易看懂?
在知識內容相同的前提下,如果看不懂一本內容豐富、講解細致的書,看一本薄薄的、浮光掠影的圖書反而能看懂?這完全沒道理。
但有些讀者確實這樣說過,這一點我也能理解,存在“鴕鳥心態”的人,他并不是第一個:看不到的就當它不存在。有些書之所以薄,無非是兩個知識點不講:這也不講,那也不講!讀者閱讀的時候固然是輕松,因為內容少呀。就像學數學,如果只教一加一等于二,當然講得簡單、學得輕松;但等到真正做事時才發現:啊?還有二加三等于五?數學還有乘法?還有除法?然后發現這也不會,那也看不懂,后果就是遇到問題就上百度。這就是有些所謂的開發者,他們是“面向百度”編程的。這些開發者往往哀嘆:做程序員太累了,一個問題往往要調半天甚至一天,其實他們根本不是調試,只是在找別人的代碼、試別人的代碼,運氣好找到了合適的代碼,問題就解決了;找不到合適的代碼就只能哀嘆了。
正因為基于以上兩點考慮進行創作,因此初學者上手本書的門檻比較低,大部分讀者都能迅速地通過學習本書內容寫出自己的Python程序、運行自己的Python程序;但要堅持把本書學完也需要一定的毅力:書中內容確實比較多,而且后面內容更偏向實際應用開發。
編程圖書不僅是用來“看”的,更是需要動手“練”的,正如先圣王陽明所倡導的:知行合一。學習本書需要讀者認真練習書中每個示例程序,還需要讀者認真完成全書在各章節后所配的110道Python練習題(面試題),如果讀者需要獲取關于課后習題的解決方法、編程思路,可以關注“瘋狂講義”微信公眾號。另外,筆者創作了一套已銷售過萬份的Python視頻課程,感興趣的讀者歡迎聯系“瘋狂講義”微信公眾號了解詳情,相信圖書與視頻雙管齊下會更加利于掌握Python。需要說明的是,圖書與課程并不是一一對應的關系。
本書有什么特點
本書并不是一本簡單的Python入門教材,雖然本書上手門檻很低,但本書的知識體系很豐富。在過去的5年里,本書收獲了不俗的銷量,在各大電商科技圖書排行榜上屢屢登頂。總結起來,本書具有如下三個特點。
1. 講解通俗,上手門檻低
創作本書的最初目的決定了本書的上手門檻,本書不會故弄玄虛地糾纏于晦澀的概念,而是力求用淺顯易懂的比喻引出概念、用口語化的方式介紹編程、用清晰的邏輯解釋思路。
為了降低讀者閱讀的難度,書中代碼的注釋非常詳細,幾乎每兩行代碼就有一行注釋。本書所有程序中關鍵代碼以粗體字標出,也是為了幫助讀者能迅速找到這些程序的關鍵點。
2.案例驅動,引爆編程激情
本書不是知識點的鋪陳,而是致力于將知識點融入實際項目的開發中,所以書中涉及大量Python案例:五子棋游戲、畫圖板、桌面彈球、合金彈頭、大數據展示、各國人均GDP對比、基于爬蟲的招聘熱點分析、基于爬蟲的高清圖片下載、基于Scrapy+Selenium的微博登錄……希望讀者通過編寫這些程序找到編程的樂趣。
3.知識體系完備,直面企業開發實戰
雖然本書在講解上力求簡單,但內容并不簡單,全書知識體系完備且系統,不僅全方位地覆蓋Python語言本身的語法,而且覆蓋大數據展示、爬蟲等Python的熱門技術,這些內容能帶領讀者直面企業開發實戰。
本書寫給誰看
如果你僅僅想對Python有所涉獵,那么本書并不適合你;如果小朋友有興趣學習本書,可先引導他閱讀本書前半部分;如果你想全面掌握Python編程,并使用Python解決大數據分析、網絡爬蟲等實際企業開發項目,那么你應該選擇本書,并認真學完此書。希望本書能引爆你內心潛在的編程激情,讓你廢寢忘食。 |
內容簡介:本書全面而深入介紹了Python編程的相關內容,全書內容大致可分為四個部分,一部分系統講解了Python的基本語法結構、函數編程、類和對象、模塊和包、異常處理等;第二部分主要介紹Python常用的內置模塊和包,這部分包括正則表達式支持IO編程、數據庫編程、并發編程、網絡通信編程等內容;第三部分主要介紹Python開發工程化方面的內容;第四部分則屬于"Python項目實戰”,這部分通過項目介紹了Python游戲開發、大數據展示、網絡爬蟲等熱門技能,進一步貼近就業崗位需求。 |
目錄:第1章 Python語言概述和開發環境 1 1.1 Python簡介 2 1.1.1 Python簡史 2 1.1.2 Python的特點 3 1.2 Python程序運行機制 3 1.3 開發Python的準備 4 1.3.1 在Windows上安裝Python 4 1.3.2 在Linux上安裝Python 6 1.3.3 在Mac OS X上安裝Python 7 1.4 第一個Python程序 7 1.4.1 編輯Python源程序 7 1.4.2 使用IDLE運行Python程序 8 1.4.3 使用命令行工具運行Python程序 8 1.5 交互式解釋器 10 1.6 本章小結 11 本章練習 11 第2章 變量和簡單類型 12 2.1 單行注釋和多行注釋 13 2.2 變量 14 2.2.1 Python是弱類型語言 14 2.2.2 使用print函數輸出變量 15 2.2.3 變量的命名規則 16 2.2.4 Python的關鍵字和內置函數 17 2.3 數值類型 18 2.3.1 整型 18 2.3.2 浮點型 20 2.3.3 復數 20 2.4 字符串入門 21 2.4.1 字符串和轉義字符 21 2.4.2 拼接字符串 22 2.4.3 repr和字符串 22 2.4.4 使用input和raw_input獲取用戶 輸入 23 2.4.5 長字符串 24 2.4.6 原始字符串 24 2.4.7 字節串(bytes) 25 2.5 深入使用字符串 27 2.5.1 轉義字符 27 2.5.2 字符串格式化 27 2.5.3 序列相關方法 29 2.5.4 大小寫相關方法 30 2.5.5 刪除空白 32 2.5.6 查找、替換相關方法 32 2.5.7 分割、連接方法 34 2.6 運算符 34 2.6.1 賦值運算符 34 2.6.2 算術運算符 35 2.6.3 位運算符 37 2.6.4 擴展后的賦值運算符 40 2.6.5 索引運算符 40 2.6.6 比較運算符與bool類型 40 2.6.7 邏輯運算符 41 2.6.8 三目運算符 42 2.6.9 in運算符 43 2.6.10 運算符的結合性和優先級 43 2.7 本章小結 44 本章練習 44 第3章 列表、元組和字典 46 3.1 序列簡介 47 3.1.1 Python的序列 47 3.1.2 創建列表和元組 47 3.2 列表和元組的通用用法 48 3.2.1 通過索引使用元素 48 3.2.2 子序列 48 3.2.3 加法 49 3.2.4 乘法 49 3.2.5 in運算符 50 3.2.6 長度、最大值和最小值 50 3.2.7 序列封包和序列解包 51 3.3 使用列表 52 3.3.1 創建列表 52 3.3.2 增加列表元素 53 3.3.3 刪除列表元素 54 3.3.4 修改列表元素 55 3.3.5 列表的其他常用方法 56 3.4 使用字典 58 3.4.1 字典入門 58 3.4.2 創建字典 58 3.4.3 字典的基本用法 59 3.4.4 字典的常用方法 60 3.4.5 使用字典格式化字符串 63 3.5 本章小結 63 本章練習 64 第4章 流程控制 65 4.1 順序結構 66 4.2 if分支結構 66 4.2.1 不要忘記縮進 67 4.2.2 不要隨意縮進 69 4.2.3 不要遺忘冒號 70 4.2.4 if條件的類型 70 4.2.5 if分支的邏輯錯誤 71 4.2.6 if表達式 72 4.2.7 pass語句 72 4.3 斷言 73 4.4 循環結構 73 4.4.1 while循環 73 4.4.2 使用while循環遍歷列表和元組 74 4.4.3 for-in循環 75 4.4.4 使用for-in循環遍歷列表和元組 76 4.4.5 使用for-in循環遍歷字典 77 4.4.6 循環使用else 78 4.4.7 嵌套循環 79 4.4.8 for表達式 80 4.4.9 常用工具函數 82 4.5 控制循環結構 83 4.5.1 使用break結束循環 83 4.5.2 使用continue忽略本次循環的剩 下語句 85 4.5.3 使用return結束方法 85 4.6 牛刀小試 86 4.6.1 數字轉人民幣讀法 86 4.6.2 繞圈圈 87 4.6.3 控制臺五子棋 89 4.6.4 控制臺超市系統 90 4.7 本章小結 94 本章練習 94 第5章 函數和lambda表達式 97 5.1 函數入門 98 5.1.1 理解函數 98 5.1.2 定義函數和調用函數 99 5.1.3 為函數提供文檔 100 5.1.4 多個返回值 100 5.1.5 遞歸函數 101 5.2 函數的參數 102 5.2.1 關鍵字(keyword)參數 102 5.2.2 參數默認值 103 5.2.3 參數收集(個數可變的參數) 105 5.2.4 逆向參數收集 106 5.2.5 函數的參數傳遞機制 107 5.2.6 變量作用域 111 5.3 局部函數 113 5.4 函數的高級內容 114 5.4.1 使用函數變量 115 5.4.2 使用函數作為函數形參 115 5.4.3 使用函數作為返回值 116 5.5 局部函數與lambda表達式 117 5.5.1 回顧局部函數 117 5.5.2 使用lambda表達式代替局部函數 118 5.6 本章小結 119 本章練習 119 第6章 類和對象 120 6.1 類和對象 121 6.1.1 定義類 121 6.1.2 對象的產生和使用 122 6.1.3 對象的動態性 123 6.1.4 實例方法和自動綁定self 124 6.2 方法 126 6.2.1 類也能調用實例方法 126 6.2.2 類方法與靜態方法 128 6.2.3 @函數裝飾器 128 6.2.4 再論類命名空間 131 6.3 成員變量 131 6.3.1 類變量和實例變量 131 6.3.2 使用property函數定義屬性 134 6.4 隱藏和封裝 137 6.5 類的繼承 139 6.5.1 繼承的語法 139 6.5.2 關于多繼承 140 6.5.3 重寫父類的方法 140 6.5.4 使用未綁定方法調用被重寫的 方法 141 6.5.5 使用super函數調用父類的構造 方法 142 6.6 Python的動態性 143 6.6.1 動態屬性與__slots__ 144 6.6.2 使用type()函數定義類 145 6.6.3 使用metaclass 146 6.7 多態 147 6.7.1 多態性 147 6.7.2 檢查類型 149 6.8 枚舉類 150 6.8.1 枚舉入門 150 6.8.2 枚舉的構造器 152 6.9 本章小結 153 本章練習 153 第7章 異常處理 154 7.1 異常概述 155 7.2 異常處理機制 156 7.2.1 使用try...except捕獲異常 156 7.2.2 異常類的繼承體系 157 7.2.3 多異常捕獲 159 7.2.4 訪問異常信息 160 7.2.5 else塊 161 7.2.6 使用finally回收資源 163 7.2.7 異常處理嵌套 165 7.3 使用raise引發異常 165 7.3.1 引發異常 165 7.3.2 自定義異常類 166 7.3.3 except和raise同時使用 167 7.3.4 raise不需要參數 168 7.4 Python的異常傳播軌跡 168 7.5 異常處理規則 170 7.5.1 不要過度使用異常 171 7.5.2 不要使用過于龐大的try塊 172 7.5.3 不要忽略捕獲到的異常 172 7.6 本章小結 172 本章練習 173 第8章 Python類的特殊方法 174 8.1 常見的特殊方法 175 8.1.1 重寫__repr__方法 175 8.1.2 析構方法:__del__ 176 8.1.3 __dir__方法 177 8.1.4 __dict__屬性 178 8.1.5 __getattr__、__setattr__等 178 8.2 與反射相關的屬性和方法 180 8.2.1 動態操作屬性 180 8.2.2 __call__屬性 182 8.3 與序列相關的特殊方法 183 8.3.1 序列相關方法 183 8.3.2 實現迭代器 185 8.3.3 擴展列表、元組和字典 186 8.4 生成器 186 8.4.1 創建生成器 187 8.4.2 生成器的方法 189 8.5 運算符重載的特殊方法 191 8.5.1 與數值運算符相關的特殊方法 191 8.5.2 與比較運算符相關的特殊方法 194 8.5.3 與單目運算符相關的特殊方法 195 8.5.4 與類型轉換相關的特殊方法 196 8.5.5 與常見的內建函數相關的特殊 方法 197 8.6 本章小結 198 本章練習 198 第9章 模塊和包 199 9.1 模塊化編程 200 9.1.1 導入模塊的語法 200 9.1.2 定義模塊 203 9.1.3 為模塊編寫說明文檔 203 9.1.4 為模塊編寫測試代碼 204 9.2 加載模塊 205 9.2.1 使用環境變量 205 9.2.2 默認的模塊加載路徑 208 9.2.3 導入模塊的本質 209 9.2.4 模塊的__all__變量 211 9.3 使用包 212 9.3.1 什么是包 212 9.3.2 定義包 212 9.3.3 導入包內成員 214 9.4 查看模塊內容 216 9.4.1 模塊包含什么 216 9.4.2 使用__doc__屬性查看文檔 217 9.4.3 使用__file__屬性查看模塊的源 文件路徑 218 9.5 本章小結 218 本章練習 218 第10章 常見模塊 219 10.1 sys 220 10.1.1 獲取運行參數 222 10.1.2 動態修改模塊加載路徑 223 10.2 os模塊 223 10.3 random 225 10.4 time 227 10.5 JSON支持 230 10.5.1 JSON的基本知識 230 10.5.2 Python的JSON支持 232 10.6 正則表達式 236 10.6.1 Python的正則表達式支持 236 10.6.2 正則表達式旗標 241 10.6.3 創建正則表達式 242 10.6.4 子表達式 244 10.6.5 貪婪模式與勉強模式 246 10.7 容器相關類 247 10.7.1 set和frozenset 248 10.7.2 雙端隊列(deque) 250 10.7.3 Python的堆操作 253 10.8 collections下的容器支持 255 10.8.1 ChainMap對象 255 10.8.2 Counter對象 257 10.8.3 defaultdict對象 260 10.8.4 namedtuple工廠函數 261 10.8.5 OrderedDict對象 262 10.9 函數相關模塊 264 10.9.1 itertools模塊的功能函數 264 10.9.2 functools模塊的功能函數 267 10.10 本章小結 273 本章練習 273 第11章 圖形界面編程 275 11.1 Python的GUI庫 276 11.2 Tkinter GUI編程的組件 277 11.3 布局管理器 283 11.3.1 Pack布局管理器 283 11.3.2 Grid布局管理器 285 11.3.3 Place布局管理器 287 11.4 事件處理 288 11.4.1 簡單的事件處理 289 11.4.2 事件綁定 289 11.5 Tkinter常用組件 293 11.5.1 使用ttk組件 293 11.5.2 Variable類 294 11.5.3 使用compound選項 295 11.5.4 Entry和Text組件 297 11.5.5 Radiobutton和Checkbutton組件 300 11.5.6 Listbox和Combobox組件 303 11.5.7 Spinbox組件 308 11.5.8 Scale和LabeledScale組件 309 11.5.9 Labelframe組件 312 11.5.10 Panedwindow組件 314 11.5.11 OptionMenu組件 316 11.6 對話框(Dialog) 318 11.6.1 普通對話框 318 11.6.2 自定義模式、非模式對話框 320 11.6.3 輸入對話框 322 11.6.4 文件對話框 324 11.6.5 顏色選擇對話框 326 11.6.6 消息框 327 11.7 菜單 330 11.7.1 窗口菜單 330 11.7.2 右鍵菜單 334 11.8 在Canvas中繪圖 336 11.8.1 Tkinter Canvas的繪制功能 336 11.8.2 操作圖形項的標簽 343 11.8.3 操作圖形項 345 11.8.4 為圖形項綁定事件 349 11.8.5 繪制動畫 354 11.9 本章小結 357 本章練習 357 第12章 文件I/O 358 12.1 使用pathlib模塊操作目錄 359 12.1.1 PurePath的基本功能 360 12.1.2 PurePath的屬性和方法 362 12.1.3 Path的功能和用法 363 12.2 使用os.path操作目錄 365 12.3 使用fnmatch處理文件名匹配 366 12.4 打開文件 367 12.4.1 文件打開模式 367 12.4.2 緩沖 368 12.5 讀取文件 369 12.5.1 按字節或字符讀取 369 12.5.2 按行讀取 371 12.5.3 使用fileinput讀取多個輸入流 371 12.5.4 文件迭代器 372 12.5.5 管道輸入 373 12.5.6 使用with語句 374 12.5.7 使用linecache隨機讀取指定行 376 12.6 寫文件 376 12.6.1 文件指針的概念 376 12.6.2 輸出內容 377 12.7 os模塊的文件和目錄函數 378 12.7.1 與目錄相關的函數 379 12.7.2 與權限相關的函數 380 12.7.3 與文件訪問相關的函數 381 12.8 使用tempfile模塊生成臨時文件和 臨時目錄 383 12.9 本章小結 385 本章練習 385 第13章 數據庫編程 386 13.1 Python數據庫API簡介 387 13.1.1 全局變量 387 13.1.2 數據庫API的核心類 388 13.1.3 操作數據庫的基本流程 389 13.2 操作SQLite數據庫 389 13.2.1 創建數據表 390 13.2.2 使用SQLite Expert工具 391 13.2.3 使用序列重復執行DML語句 393 13.2.4 執行查詢 395 13.2.5 事務控制 396 13.2.6 執行SQL腳本 397 13.2.7 創建自定義函數 398 13.2.8 創建聚集函數 399 13.2.9 創建比較函數 400 13.3 操作MySQL數據庫 401 13.3.1 下載和安裝MySQL數據庫 401 13.3.2 使用pip工具管理模塊 404 13.3.3 執行DDL語句 405 13.3.4 執行DML語句 407 13.3.5 執行查詢語句 408 13.3.6 調用存儲過程 409 13.4 本章小結 410 本章練習 411 第14章 并發編程 412 14.1 線程概述 413 14.1.1 線程和進程 413 14.1.2 多線程的優勢 414 14.2 線程的創建和啟動 415 14.2.1 調用Thread類的構造器創建 線程 415 14.2.2 繼承Thread類創建線程類 417 14.3 線程的生命周期 418 14.3.1 新建和就緒狀態 418 14.3.2 運行和阻塞狀態 419 14.3.3 線程死亡 420 14.4 控制線程 421 14.4.1 join線程 422 14.4.2 后臺線程 422 14.4.3 線程睡眠:sleep 423 14.5 線程同步 424 14.5.1 線程安全問題 424 14.5.2 同步鎖(Lock) 425 14.5.3 死鎖 428 14.6 線程通信 430 14.6.1 使用Condition實現線程通信 430 14.6.2 使用隊列(Queue)控制線程 通信 433 14.6.3 使用Event控制線程通信 434 14.7 線程池 436 14.7.1 使用線程池 437 14.7.2 獲取執行結果 439 14.8 線程相關類 440 14.8.1 線程局部變量 440 14.8.2 定時器 441 14.8.3 任務調度 442 14.9 多進程 443 14.9.1 使用fork創建新進程 443 14.9.2 使用multiprocessing.Process創建 新進程 444 14.9.3 Context和啟動進程的方式 446 14.9.4 使用進程池管理進程 448 14.9.5 進程通信 449 14.10 本章小結 451 本章練習 451 第15章 網絡編程 452 15.1 網絡編程的基礎知識 453 15.1.1 網絡基礎知識 453 15.1.2 IP地址和端口號 454 15.2 Python的基本網絡支持 455 15.2.1 Python的網絡模塊概述 455 15.2.2 使用urllib.parse子模塊 456 15.2.3 使用urllib.request讀取資源 459 15.2.4 管理cookie 464 15.3 基于TCP協議的網絡編程 467 15.3.1 TCP協議基礎 467 15.3.2 使用socket創建TCP服務器端 468 15.3.3 使用socket通信 469 15.3.4 加入多線程 470 15.3.5 記錄用戶信息 472 15.3.6 半關閉的socket 477 15.3.7 selectors模塊 478 15.4 基于UDP協議的網絡編程 480 15.4.1 UDP協議基礎 480 15.4.2 使用socket發送和接收數據 481 15.4.3 使用UDP協議實現多點廣播 483 15.5 電子郵件支持 484 15.5.1 使用smtplib模塊發送郵件 484 15.5.2 使用poplib模塊收取郵件 488 15.6 本章小結 491 本章練習 491 第16章 文檔和測試 492 16.1 使用pydoc生成文檔 493 16.1.1 在控制臺中查看文檔 494 16.1.2 生成HTML文檔 495 16.1.3 啟動本地服務器來查看文檔信息 495 16.1.4 查找模塊 496 16.2 軟件測試概述 497 16.2.1 軟件測試的概念和目的 497 16.2.2 軟件測試的分類 498 16.2.3 開發活動和測試活動 499 16.2.4 常見的Bug管理工具 499 16.3 文檔測試 500 16.4 單元測試 502 16.4.1 單元測試概述 502 16.4.2 單元測試的邏輯覆蓋 504 16.5 使用PyUnit(unittest) 506 16.5.1 PyUnit(unittest)的用法 507 16.5.2 運行測試 510 16.5.3 使用測試包 511 16.5.4 測試固件之setUp和tearDown 513 16.5.5 跳過測試用例 515 16.6 本章小結 516 本章練習 516 第17章 打包和發布 517 17.1 使用zipapp模塊 518 17.1.1 生成可執行的Python檔案包 518 17.1.2 創建獨立應用 519 17.2 使用PyInstaller生成可執行程序 520 17.2.1 安裝PyInstaller 520 17.2.2 生成可執行程序 521 17.3 本章小結 523 本章練習 523 第18章 合金彈頭 524 18.1 合金彈頭游戲簡介 525 18.2 pygame簡介 525 18.2.1 安裝pygame 526 18.2.2 pygame常用的游戲API 527 18.3 開發游戲界面組件 529 18.3.1 游戲界面分析 529 18.3.2 實現“怪物”類 529 18.3.3 實現怪物管理 534 18.3.4 實現“子彈”類 536 18.3.5 加載、管理游戲圖片 538 18.3.6 讓游戲“運行”起來 540 18.4 增加“角色” 541 18.4.1 開發“角色”類 541 18.4.2 添加角色 547 18.5 合理繪制地圖 550 18.6 增加音效 551 18.7 增加游戲場景 554 18.8 本章小結 558 本章練習 558 第19章 數據可視化 559 19.1 使用Matplotlib生成數據圖 560 19.1.1 安裝Matplotlib包 560 19.1.2 Matplotlib數據圖入門 561 19.1.3 管理圖例 562 19.1.4 管理坐標軸 565 19.1.5 管理多個子圖 566 19.2 功能豐富的數據圖 570 19.2.1 餅圖 570 19.2.2 柱狀圖 571 19.2.3 水平柱狀圖 573 19.2.4 散點圖 574 19.2.5 等高線圖 576 19.2.6 3D圖形 577 19.3 使用Pygal生成數據圖 578 19.3.1 安裝Pygal包 578 19.3.2 Pygal數據圖入門 578 19.3.3 配置Pygal數據圖 580 19.4 Pygal支持的常見數據圖 581 19.4.1 折線圖 581 19.4.2 水平柱狀圖和水平折線圖 581 19.4.3 疊加柱狀圖和疊加折線圖 582 19.4.4 餅圖 583 19.4.5 點圖 584 19.4.6 儀表(Gauge)圖 585 19.4.7 雷達圖 586 19.5 處理數據 587 19.5.1 CSV文件格式 587 19.5.2 JSON數據 590 19.5.3 數據清洗 593 19.5.4 讀取網絡數據 595 19.6 本章小結 597 本章練習 597 第20章 網絡爬蟲 598 20.1 Scrapy簡介 599 20.1.1 了解Scrapy 599 20.1.2 安裝Scrapy 600 20.2 使用爬蟲爬取、分析招聘信息 601 20.2.1 創建Scrapy項目 601 20.2.2 使用shell調試工具 603 20.2.3 Scrapy開發步驟 606 20.2.4 使用JSON導出信息 611 20.2.5 將數據寫入數據庫 611 20.2.6 使用Pygal展示招聘信息 612 20.3 處理反爬蟲 613 20.3.1 使用shell調試工具分析目標站點 614 20.3.2 使用Scrapy爬取高清圖片 616 20.3.3 應對反爬蟲的常見方法 618 20.3.4 整合Selenium模擬瀏覽器行為 620 20.4 本章小結 624 本章練習 624 |
序: |