瘋狂 Python 講義

李剛

  • 出版商: 電子工業
  • 出版日期: 2019-01-01
  • 定價: $708
  • 售價: 8.5$602
  • 語言: 簡體中文
  • 頁數: 648
  • 裝訂: 平裝
  • ISBN: 7121351978
  • ISBN-13: 9787121351976
  • 相關分類: Python
  • 下單後立即進貨 (約4週~6週)

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

商品描述

本書全面而深入介紹了Python編程的相關內容,全書內容大致可分為四個部分,第一部分系統講解了Python的基本語法結構、函數編程、類和對象、模塊和包、異常處理等;第二部分主要介紹Python常用的內置模塊和包,這部分包括正則表達式支持IO編程、數據庫編程、並發編程、網絡通信編程等內容;第三部分主要介紹Python開發工程化方面的內容;第四部分則屬於“Python項目實戰”,這部分通過項目介紹了Python游戲開發、大數據展示、網絡爬蟲等熱門技能,尤其是網絡爬蟲和大數據展示,均是當下Python最熱的就業崗位。

作者簡介

李剛,十餘年軟件開發從業經驗,瘋狂軟件教育中心教學總監。瘋狂Java實訓營創始人,瘋狂Java體係原創圖書作者。廣東技術師範學院計算機科學系兼職副教授,CSDN特邀講師。培訓的學生已在騰訊、阿里、華為、IBM、網易、唯品會、電信盈科等名企就職。國內知名高端IT技術圖書作家,已出版《瘋狂Java講義》《瘋狂Android講義》《輕量級Java EE企業應用實戰》《瘋狂前端開發講義》《瘋狂HTML5/CSS3/JavaScript講義》《瘋狂iOS講義(基礎篇)(提高篇)》《瘋狂XML講義》《經典JavaEE企業應用實戰》《Struts 2.x quanwei指南》等著作。其中瘋狂Java體系圖書均已沉澱多年,贏得極高的市場認同,多次重印,多部著作印刷數量超過10萬冊,並被多所“985”“211”院校選作教材,部分圖書已被翻譯成繁體中文版,授權到中國台灣地區。

目錄大綱

第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運算符44 
2.6.10運算符的結合性和優先級44 
2.7本章小結45 
本章練習45 

第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