內容簡介
《21天學通Python》全面、系統、深入地講解了Python編程基礎語法與高級套用。在講解過程中,通過大量實際操作的實例將Python語言知識全面、系統、深入地呈現給讀者。此外,作者專門為本書錄製了大量的配套教學視頻,讓讀者通過分析實例、運行實例儘快熟悉Python編程,在學習中遇到問題時,也可以作為參考。
《21天學通Python》共分三篇。第一篇介紹Python語言的特點、安裝、語法基礎、程式流程控制、面向過程的編程方法、面向對象的編程方法、程式異常的處理;第二篇介紹了Python語言中的包與模組、疊代器、生成器、裝飾器、上下文管理器等進階語法,同時介紹了使用Python標準庫中的檔案系統處理、圖形化界面編程、正則表達式、網路編程、多進(線)程編程、資料庫編程。此外,還介紹了運用第三方庫的Web網站編程、圖片處理;第三篇通過兩個案例介紹Python的綜合編程技術。
《21天學通Python》在內容上涉及面廣,從基本操作到高級技術及綜合案例,涉及Python語言的基礎語法和編程特性。《21天學通Python》在設計上淺顯易懂、實例豐富,尤其適合廣大編程初學者自學,也適合對Python語言感興趣的愛好者作為參考用書。
編輯推薦
“21天學編程系列”自2009年1月上市以來一直受到廣大讀者的青睞。該系列中的大部分圖書從一上市就登上了編程類圖書銷售排行榜的前列,很多大、中專院校也將該系列中的一些圖書作為教材使用,目前這些圖書已經多次印刷、改版。可以說,“21天學編程系列”是自2009年以來,國內原創計算機編程圖書最有影響力的品牌之一。
為了使該系列圖書能緊跟技術和教學的發展,更加適合讀者學習和學校教學,我們結合最新技術和讀者的建議,對該系列圖書進行了改版,同時增加了本書——《21天學通Python》。
目錄
第一篇Python 編程基礎
第1章編程與Python.........................................................................................1
1.1什麼是編程........................................................................................................1
1.1.1硬體與軟體...........................................................................................................1
1.1.2程式語言...............................................................................................................2
1.1.3編程與調試...........................................................................................................3
1.2選擇Python的理由...........................................................................................4
1.2.1Python是免費的自由軟體...................................................................................4
1.2.2Python是跨平台的...............................................................................................4
1.2.3Python功能強大...................................................................................................4
1.2.4Python清晰優雅...................................................................................................5
1.3安裝Python........................................................................................................5
1.3.1在Windows下安裝Python..................................................................................6
1.3.2在Linux下安裝Python........................................................................................7
1.4選擇開發工具....................................................................................................9
1.4.1Python自帶開發工具:IDLE..............................................................................9
1.4.2文本編輯器:Emacs.............................................................................................9
1.4.3Python開發工具:PythonWin...........................................................................12
1.5編輯和運行Python程式.................................................................................15
1.5.1你好,Python......................................................................................................15
1.5.2運行程式檔案........................................................................................................................15
1.5.3互動式運行Python.............................................................................................16
1.6小結..................................................................................................................17
1.7本章習題..........................................................................................................17
第2章Python起步...........................................................................................19
2.1Python語法基礎..............................................................................................19
2.1.1縮進分層.............................................................................................................19
2.1.2代碼注釋.............................................................................................................20
2.1.3斷行.....................................................................................................................20
2.2Python輸入/輸出.............................................................................................21
2.2.1接收鍵盤/輸入....................................................................................................21
2.2.2顯示處理結果........................................................................................................................22
2.3用Python計算.................................................................................................22
2.3.1算式與代數式運算..............................................................................................23
2.3.2驚奇.....................................................................................................................24
2.4小結..................................................................................................................25
2.5本章習題..........................................................................................................25
第3章Python數據類型......................................................................................................27
3.1Python簡單數據類型......................................................................................27
3.1.1字元串(str)........................................................................................................................27
3.1.2整數(int).........................................................................................................30
3.1.3浮點數(float)..................................................................................................31
3.1.4類型轉換.............................................................................................................31
3.2字元串進階.....................................................................................................................32
3.2.1原始字元串.........................................................................................................32
3.2.2格式化字元串..............................................................................................................33
3.2.3中文字元串處理..................................................................................................33
3.3標誌符與賦值號..............................................................................................34
3.3.1標誌符.................................................................................................................34
3.3.2“=”.................................................................................................................34
3.4Python結構數據類型......................................................................................35
3.4.1列表(list).........................................................................................................35
3.4.2元組(tuple)........................................................................................................................37
3.4.3字典(dict).......................................................................................................37
3.5內置常量與邏輯運算符、比較運算符..........................................................39
3.5.1常用內置常量.................................................................................................39
3.5.2Python中邏輯運算符.........................................................................................39
3.5.3Python中比較運算符.........................................................................................40
3.5.4Python中其他邏輯操作符.................................................................................40
3.6序列..................................................................................................................41
3.6.1序列切片.............................................................................................................41
3.6.2序列內置操作..............................................................................................42
3.7小結..................................................................................................................43
3.8本章習題..........................................................................................................43
第4章控制語句執行流程.................................................................................45
4.1用if選擇執行語句..........................................................................................45
4.1.1if基礎..................................................................................................................45
4.1.2if語句的嵌套......................................................................................................48
4.2用for循環執行語句.......................................................................................50
4.2.1for基礎................................................................................................................50
4.2.2for語句與break語句、continue語句...............................................................50
4.2.3for語句與range()函式.......................................................................................52
4.2.4for語句與內置疊代函式....................................................................................53
4.3用while循環執行語句...................................................................................54
4.3.1while基礎.............................................................................................................54
4.3.2增量賦值運算符..................................................................................................55
4.4推導或內涵(listcomprehension)................................................................56
4.4.1推導基礎.............................................................................................................56
4.4.2推導進階.............................................................................................................56
4.5小結..................................................................................................................57
4.6本章習題..........................................................................................................57
第5章自定義功能單元(一)..........................................................................59
5.1使用函式..........................................................................................................59
5.1.1聲明函式.............................................................................................................59
5.1.2調用函式.............................................................................................................60
5.2深入函式..........................................................................................................61
5.2.1默認值參數.........................................................................................................61
5.2.2參數傳遞.............................................................................................................63
5.2.3可變數量參數傳遞..............................................................................................63
5.2.4拆解序列的函式調用..........................................................................................66
5.2.5函式調用時參數的傳遞方法..............................................................................66
5.3變數的作用域..................................................................................................68
5.4使用匿名函式(lambda)..............................................................................69
5.5Python常用內建函式......................................................................................70
5.6小結..................................................................................................................71
5.7本章習題..........................................................................................................71
第6章自定義功能單元(二)..........................................................................73
6.1面向對象編程概述..........................................................................................73
6.1.1萬物皆對象.........................................................................................................73
6.1.2對象優越性.........................................................................................................74
6.1.3類和對象.............................................................................................................74
6.2定義和使用類..................................................................................................74
6.2.1定義類.................................................................................................................74
6.2.2使用類.................................................................................................................75
6.3類的屬性和方法..............................................................................................76
6.3.1類的方法.............................................................................................................76
6.3.2類的屬性.............................................................................................................78
6.3.3類成員方法與靜態方法......................................................................................80
6.4類的繼承..........................................................................................................81
6.4.1類的繼承.............................................................................................................81
6.4.2多重繼承.............................................................................................................82
6.4.3方法重載.............................................................................................................84
6.5小結..................................................................................................................84
6.6本章習題..........................................................................................................84
第7章錯誤、異常和程式調試..........................................................................86
7.1語法錯誤..........................................................................................................86
7.2異常的處理......................................................................................................87
7.2.1異常處理的基本語法..........................................................................................87
7.2.2Python主要的內置異常及其處理......................................................................89
7.3手工拋出異常..................................................................................................91
7.3.1用raise手工拋出異常........................................................................................91
7.3.2assert語句...........................................................................................................92
7.3.3自定義異常類.........................................................................................93
7.4用pdb調試程式..............................................................................................94
7.4.1調試語句塊函式..................................................................................................94
7.4.2調試函式.............................................................................................................95
7.5測試程式..........................................................................................................96
7.5.1用testmod函式測試...........................................................................................96
7.5.2用testfile函式測試.............................................................................................97
7.6小結..................................................................................................................98
7.7本章習題..........................................................................................................98
第二篇Python 編程高階
第8章複雜程式組織......................................................................................100
8.1模組................................................................................................................100
8.1.1模組概述...........................................................................................................100
8.1.2自己編寫模組................................................................................................101
8.1.3模組位置...........................................................................................................102
8.1.4__pycache__目錄..............................................................................................103
8.1.5具有獨立運行能力的模組................................................................................103
8.2包....................................................................................................................104
8.2.1包概述...............................................................................................................104
8.2.2包詳解...............................................................................................................105
8.3Python常用標準庫簡介................................................................................106
8.3.1數學類模組.......................................................................................................106
8.3.2日期與時間類.....................................................................................107
8.4小結................................................................................................................107
8.5本章習題........................................................................................................107
第9章疊代器、生成器與裝飾器....................................................................109
9.1疊代器............................................................................................................109
9.1.1疊代器概述.......................................................................................................109
9.1.2自定義疊代器...............................................................................110
9.1.3內置疊代器工具................................................................................................110
9.2生成器............................................................................................................113
9.2.1生成器創建.......................................................................................................113
9.2.2深入生成器.......................................................................................................114
9.2.3生成器與協程...............................................................................115
9.3裝飾器............................................................................................................116
9.3.1裝飾器概述.......................................................................................................116
9.3.2裝飾函式...........................................................................................................116
9.3.3裝飾類...............................................................................................................117
9.4小結................................................................................................................118
9.5本章習題........................................................................................................119
第10章Python進階話題..................................................................................................120
10.1函式與命名空間..........................................................................................120
10.2閉包及其套用..............................................................................................121
10.2.1閉包概述.........................................................................................................121
10.2.2閉包與延遲求值..............................................................................................122
10.2.3閉包與泛型函式..............................................................................................122
10.3上下文管理器..............................................................................................123
10.4用字元串操作對象屬性..............................................................................125
10.5用字典構造分支程式..................................................................................126
10.6重載類的特殊方法......................................................................................127
10.7鴨子類型(ducktyping)與多態...............................................................128
10.8小結..............................................................................................................129
10.9本章習題......................................................................................................129
第11章檔案與檔案系統.................................................................................131
11.1檔案操作基礎..............................................................................................131
11.1.1open()函式.......................................................................................................131
11.1.2用fileinput操作檔案......................................................................................133
11.2常用檔案和目錄操作..................................................................................134
11.2.1獲得當前路徑..................................................................................................134
11.2.2獲得目錄中的內容..........................................................................................134
11.2.3創建目錄..........................................................................................................135
11.2.4刪除目錄..........................................................................................................135
11.2.5判斷是否是目錄..............................................................................................135
11.2.6判斷是否為檔案..............................................................................................135
11.2.7遍歷某目錄下的所有檔案和目錄..................................................................136
11.2.8由檔案名稱批量獲取姓名和考號......................................................................136
11.2.9批量檔案重命名..............................................................................................137
11.3編譯為執行檔......................................................................................138
11.3.1用py2exe生成可執行程式............................................................................138
11.3.2用cx_freeze生成執行檔........................................................................139
11.4小結..............................................................................................................141
11.5本章習題......................................................................................................141
第12章基於tkinter的GUI編程....................................................................142
12.1GUI概述......................................................................................................142
12.1.1GUI是什麼.....................................................................................................142
12.1.2Python編寫GUI程式庫................................................................................142
12.2tkinter圖形化庫簡介...................................................................................143
12.2.1創建GUI程式第一步.....................................................................................143
12.2.2創建GUI程式第二步.....................................................................................144
12.3tkinter組件.....................................................................................................................145
12.3.1組件分類.........................................................................................................145
12.3.2布局組件.........................................................................................................145
12.4常用tkinter組件..........................................................................................146
12.4.1按鈕.................................................................................................................146
12.4.2文本框.............................................................................................................148
12.4.3標籤.................................................................................................................149
12.4.4選單.................................................................................................................150
12.4.5單選框和複選框..............................................................................................152
12.4.6繪製圖形.........................................................................................................154
12.5回響操作事件..............................................................................................156
12.5.1事件基礎.........................................................................................................156
12.5.2回響事件.........................................................................................................158
12.6對話框..........................................................................................................160
12.6.1標準對話框.....................................................................................................160
12.6.2自定義對話框..................................................................................................166
12.7小結..............................................................................................................167
12.8本章習題......................................................................................................167
第13章正則表達式........................................................................................169
13.1正則表達式基礎..........................................................................................169
13.1.1正則表達式概述..............................................................................................169
13.1.2正則表達式基本元字元..................................................................................169
13.1.3常用正則表達式..............................................................................................171
13.2re模組..........................................................................................................172
13.2.1正則匹配搜尋函式..........................................................................................172
13.2.2sub()與subn()函式..........................................................................................173
13.2.3split()函式........................................................................................................174
13.2.4正則表達式對象..............................................................................................174
13.3分組匹配與匹配對象使用..........................................................................178
13.3.1分組基礎.........................................................................................................178
13.3.2分組擴展.........................................................................................................178
13.3.3匹配對象與組的使用......................................................................................179
13.3.4匹配對象與索引使用......................................................................................180
13.4正則表達式套用示例..................................................................................181
13.5小結..............................................................................................................183
13.6本章習題......................................................................................................183
第14章網路編程............................................................................................184
14.1網路編程基礎..............................................................................................184
14.1.1什麼是網路.....................................................................................................184
14.1.2網路協定.........................................................................................................184
14.1.3地址與連線埠.....................................................................................................185
14.2套接字的使用..............................................................................................186
14.2.1用socket建立伺服器端程式..........................................................................186
14.2.2用socket建立客戶端程式..............................................................................187
14.2.3用socket建立基於UDP協定的伺服器與客戶端程式................................188
14.2.4用socketserver模組建立伺服器....................................................................190
14.3urllib與http包使用....................................................................................191
14.3.1urllib和http包簡介........................................................................................191
14.3.2用urllib和http包訪問網站...........................................................................194
14.4用poplib與smtplib庫收發郵件................................................................195
14.4.1用poplib檢查郵件.........................................................................................195
14.4.2用smtplib傳送郵件........................................................................................197
14.5用ftplib訪問FTP服務...............................................................................199
14.5.1ftplib模組簡介................................................................................................199
14.5.2使用Python訪問FTP....................................................................................201
14.6小結..............................................................................................................203
14.7本章習題......................................................................................................203
第15章執行緒和進程........................................................................................204
15.1執行緒..............................................................................................................204
15.1.1用threading.Thread直接線上程中運行函式.................................................204
15.1.2通過繼承threading.Thread類來創建執行緒.....................................................205
15.1.3執行緒類Thread使用........................................................................................205
15.2進程..............................................................................................................209
15.2.1進程基礎.........................................................................................................209
15.2.2用Popen類創建進程......................................................................................210
15.3小結..............................................................................................................212
15.4本章習題......................................................................................................212
第16章資料庫編程........................................................................................213
16.1Python資料庫應用程式接口......................................................................213
16.1.1資料庫應用程式接口概述..............................................................................213
16.1.2資料庫游標的使用..........................................................................................214
16.2Python操作SQLite3資料庫......................................................................214
16.2.1SQLite3資料庫簡介.......................................................................................214
16.2.2SQLite3資料庫操作實例...............................................................................215
16.3Python操作MariaDB資料庫.....................................................................217
16.3.1MariaDB資料庫簡介......................................................................................218
16.3.2建立MariaDB資料庫操作環境.....................................................................218
16.3.3MariaDB資料庫操作實例..............................................................................220
16.4Python操作MongoDB資料庫...................................................................222
16.4.1MongoDB資料庫簡介....................................................................................222
16.4.2建立MongoDB資料庫操作環境...................................................................222
16.4.3MongoDB資料庫基礎....................................................................................223
16.4.4MongoDB資料庫操作實例............................................................................226
16.4.5用對象關係映射(ORM)工具操作MongoDB資料庫..............................228
16.5小結..............................................................................................................231
16.6本章習題......................................................................................................231
第17章Web網站編程...................................................................................232
17.1Web網站編程概述......................................................................................232
17.2FlaskWeb框架及其套用............................................................................233
17.2.1FlaskWeb框架簡介........................................................................................233
17.2.2FlaskWeb框架初識........................................................................................233
17.2.3URL裝飾器與URL參數傳遞.......................................................................235
17.2.4GET與POST請求的參數傳遞.....................................................................237
17.2.5使用cookie與session跟蹤客戶....................................................................239
17.2.6使用靜態檔案資源與頁面檔案......................................................................241
17.2.7接收上傳檔案..................................................................................................243
17.2.8Flask框架中使用資料庫................................................................................244
17.3TornadoWeb框架及其套用........................................................................247
17.3.1Tornado框架簡介...........................................................................................247
17.3.2Tornado框架初識...........................................................................................247
17.3.3請求參數的獲取..............................................................................................249
17.3.4用cookie與安全cookie跟蹤客戶.................................................................251
17.3.5URL轉向與靜態檔案資源.............................................................................252
17.3.6TornadoWeb框架套用舉例...........................................................................254
17.4小結..............................................................................................................259
17.5本章習題......................................................................................................259
第18章數據結構基礎....................................................................................261
18.1表、棧和佇列..............................................................................................261
18.1.1用列表來創建表..............................................................................................261
18.1.2自定義棧數據結構..........................................................................................262
18.1.3實現佇列功能..................................................................................................264
18.2樹和圖..........................................................................................................265
18.2.1用列表構建樹..................................................................................................265
18.2.2實現二叉樹類與遍歷二叉樹..........................................................................266
18.2.3用字典構建與搜尋圖......................................................................................269
18.3查找與排序..................................................................................................271
18.3.1實現二分查找..................................................................................................271
18.3.2用二叉樹排序..................................................................................................273
18.4小結..............................................................................................................275
18.5本章習題......................................................................................................275
第19章用Pillow庫處理圖片.........................................................................276
19.1第三方Pillow庫概述..................................................................................276
19.1.1安裝第三方Pillow庫.....................................................................................276
19.1.2Pillow庫簡介..................................................................................................276
19.1.3Pillow庫處理圖像基礎..................................................................................277
19.1.4Image模組中函式的使用...............................................................................278
19.1.5Image模組中Image類的使用.......................................................................281
19.1.6使用ImageChops模組進行圖片合成............................................................286
19.1.7使用ImageEnhance模組增強圖像效果........................................................289
19.1.8使用ImageFilter模組的濾鏡.........................................................................290
19.1.9使用ImageDraw模組畫圖.............................................................................291
19.2使用Pillow庫處理圖片舉例......................................................................292
19.2.1圖片格式轉換..................................................................................................292
19.2.2批量生成縮略圖..............................................................................................294
19.2.3為圖片添加Logo............................................................................................297
19.3小結..............................................................................................................301
19.4本章習題......................................................................................................302
第三篇Python 編程實戰
第20章案例1做一個Windows上的360工具...........................................303
20.1案例背景......................................................................................................303
20.2從創建圖形化界面開始..............................................................................304
20.2.1創建基本圖形化工作界面..............................................................................304
20.2.2回響選單事件..................................................................................................306
20.3清理垃圾檔案..............................................................................................308
20.3.1疊代目錄.........................................................................................................308
20.3.2掃描垃圾檔案..................................................................................................309
20.3.3多執行緒加速.....................................................................................................311
20.3.4掃描所有磁碟..................................................................................................312
20.3.5刪除垃圾檔案..................................................................................................314
20.4搜尋檔案......................................................................................................316
20.4.1搜尋超大檔案..................................................................................................316
20.4.2按名稱搜尋檔案..............................................................................................317
20.5小結..............................................................................................................318
第21章案例2Python搞定大數據..............................................................320
21.1案例背景......................................................................................................320
21.1.1大數據處理方式概述......................................................................................320
21.1.2處理日誌檔案..................................................................................................321
21.1.3要實現的案例目標..........................................................................................322
21.2分割日誌檔案..............................................................................................322
21.3用Map函式處理小檔案.............................................................................324
21.4用Reduce函式歸集數據............................................................................326
21.5小結..............................................................................................................327
作者簡介
本書的作者團隊成員為一線開發工程師、資深編程專家或專業培訓師,在編程開發方面有著豐富的經驗,並已出版過多本相關暢銷書,頗受廣大讀者認可。長期積累的開發實戰經驗,結合對編程入門愛好者需求與特點的深入調查研究,本書的內容結構十分有利於編程愛好者和相關學員快速提高水平。
前言
“21天學編程系列”自2009年1月上市以來一直受到廣大讀者的青睞。該系列中的大部分圖書從一上市就登上了編程類圖書銷售排行榜的前列,很多大、中專院校也將該系列中的一些圖書作為教材使用,目前這些圖書已經多次印刷、改版。可以說,“21天學編程系列”是自2009年以來,國內原創計算機編程圖書最有影響力的品牌之一。
為了使該系列圖書能緊跟技術和教學的發展,更加適合讀者學習和學校教學,我們結合最新技術和讀者的建議,對該系列圖書進行了改版,同時增加了本書——《21天學通Python》。
本書有何特色
1.細緻體貼的講解
為了讓讀者更快地上手,本書特別設計了適合初學者的學習方式,用準確的語言總結概念、用直觀的圖示演示過程、用詳細的注釋解釋代碼、用形象的比方幫助記憶。
知識點介紹:準確、清晰是其顯著特點,一般放在每一節開始的位置,讓零基礎的讀者了解相關概念,順利入門。
範例:書中出現的完整實例,以章節順序編號,便於檢索和循序漸進地學習、實踐,放在每節知識點介紹之後。
示例代碼:與範例編號對應,層次清楚、語句簡潔、注釋豐富,體現了代碼優美的原則,有利於讀者養成良好的代碼編寫習慣。對於大段程式,均在每行代碼前設定編號,便於學習。
運行結果:對範例給出運行結果和對應圖示,幫助讀者更直觀地理解示例代碼。
代碼解析:將範例代碼中的關鍵代碼行逐一解釋,有助於讀者掌握相關概念和知識。
貼心的提示:為了便於讀者閱讀,全書還穿插著一些技巧、提示等小貼士,體例約定
如下。
提示:通常是一些貼心的提醒,讓讀者加深印象,提供建議或者解決問題的方法。
注意:提出學習過程中需要特別注意的一些知識點和內容,或者相關信息。
警告:對操作不當或理解偏差將會造成的災難性後果給出警示,以加深讀者印象。
習題:每章最後提供專門的測試習題,供讀者檢驗所學知識是否牢固掌握。
經作者多年的培訓和授課證明,以上講解方式是最適合初學者學習的方式,讀者按照這種方式學習會非常輕鬆、順利地掌握本書知識。
在本書中,所有的內容是基於Python3.X實現的。
2.實用超值的DVD光碟
為了幫助讀者比較直觀地學習,本書附帶DVD光碟,內容包括多媒體視頻、電子教案(PPT)和實例原始碼等。
多媒體視頻:
本書配有長達近9小時的教學視頻,講解關鍵知識點界面操作和書中的一些綜合練習題。作者親自配音、演示,手把手教會讀者使用。
電子教案(PPT):
本書可以作為高校相關課程的教材或課外輔導書,所以作者特別為本書製作了電子教案(PPT),以方便老師教學使用。
原始碼:
本書附贈實例“原始碼”。
3.提供完善的技術支持