全書共13章:第1章介紹Python基本知識與概念,Python開發環境配置與使用,擴展庫安裝與使用;第2章講解Python運算符與表達式以及內置函數的用法;第3章講解列表、元組、字典、集合等序列結構的常用方法和基本操作;第4章講解Python選擇結構與循環結構的語法和應用;第5章講解函數的定義與使用,不同類型的函數參數,變量的作用域以及lambda表達式;第6章講解類的定義與實例化,多種不同類型的成員方法,特殊方法與運算符重載;第7章講解字符串對象及其方法的應用;第8章講解正則表達式語法以及正則表達式在Python中的應用;第9章講解文件操作的基本知識與Python文件對象,文本文件內容讀寫,二進制文件操作與對象序列化;第10章講解文件復制、移動、重命名、遍歷等文件級操作以及目錄操作有關知識;第11章講解Python中多種不同形式的異常處理結構;第12章講解Python對SQLite以及Access、MS SQL Server、MySQL等不同數據庫的操作;第13章講解數據分析、數據處理、數據可視化以及科學計算的有關知識。
本書完全面向Python 3.x,全部案例代碼使用Python 3.5.x和Python 3.6.x編寫,大部分內容也同樣適用于Python 3.4.x。本書對Python內部工作原理進行一定程度的剖析,并適當介紹了Python代碼優化和安全編程的有關知識,可以滿足不同層次讀者的需求。
案例豐富、注釋量大、實用性強。書中幾乎每段代碼都配有大量注釋,讀者能夠在*短時間內理解代碼的思路和要點,大幅度縮短閱讀和學習時間,由淺入深,層層遞進,平滑學習曲線。
Python由Guido van Rossum于1989年底開始研制,第一個版本發行于1991年。Python推出不久就迅速得到了各行業人士的青睞,經過近30年的發展,已經滲透到計算機科學與技術、統計分析、逆向工程與軟件分析、電子取證、圖形圖像處理、人工智能、游戲設計與策劃、網站開發、移動終端開發、大數據分析與處理、深度學習、科學計算可視化、云計算、網絡爬蟲開發、系統運維、自然語言處理、密碼學、電子電路設計、樹莓派開發等專業和領域。目前,Python已經成為卡耐基梅隆大學、麻省理工學院、加州大學伯克利分校、哈佛大學等國外很多大學計算機專業或非計算機專業的程序設計入門教學語言,國內也有不少學校的多個專業陸續開設了Python程序設計課程。
Python連續多年在TIOBE網站的編程語言排行榜上排名前十位,并于2011年1月被TIOBE網站評為2010年度語言。自2015年之后,Python一直穩居TIOBE編程語言排行榜前五位。在2014年12月份IEEE Spectrum推出的編程語言排行榜中,Python排第5位,而在2017年7月份IEEE Spectrum推出的編程語言排行榜中,Python上升到了第1位。
Python是一門免費、開源的跨平臺高級動態編程語言,支持命令式編程、函數式編程,完全支持面向對象程序設計,語法簡潔清晰,并且擁有大量功能強大的標準庫和擴展庫以及眾多狂熱的支持者,可以幫助各領域的科研人員或策劃師甚至管理人員快速實現和驗證自己的思路與創意。Python用戶可以把主要精力放在業務邏輯的設計與實現上,而不用過多考慮語言本身的細節,開發效率非常高,其精妙之處令人擊節嘆賞。
Python是一門快樂的語言,學習和使用Python也是一個快樂的過程。與C語言系列和Java等語言相比,Python更加容易學習和使用,但這并不意味著可以非常輕松愉快地掌握Python。用戶熟練掌握和運用Python仍需要通過大量的練習來鍛煉自己的思維和熟悉Python編程模式,同時還需要經常關注Python社區優秀的代碼以及各種擴展庫的最新動態。當然,如果能夠適當了解Python標準庫以及擴展庫的內部工作原理,對于編寫正確而優雅的Python程序無疑是有很大幫助的。
Python是一門優雅的語言。Python語法簡潔清晰,并且提供了大量的內置對象和內置函數,編程模式非常符合人類的思維方式和習慣。在有些編程語言中需要編寫大量代碼才能實現的功能,在Python中僅需要調用內置函數或內置對象的方法即可實現。如果讀者已有其他程序設計語言的基礎,那么在學習和使用Python時,一定不要把其他語言的編程習慣和風格帶到Python中來,因為這不僅可能會使得代碼變得非常冗余、煩瑣,還可能會嚴重影響代碼的運行效率。應該盡量嘗試從最自然、最簡潔的角度出發去思考和解決問題,這樣才能寫出更加優雅、更加純正、更加Pythonic的代碼!1〗〖2〗Python程序設計基礎(第2版)〖1〗前言〖2〗本書內容組織
對于Python程序員來說,能夠熟練運用各種擴展庫毫無疑問是非常重要的,使用優秀、成熟的擴展庫可以幫助我們快速實現自己的業務邏輯和創意。但是也必須清楚地認識到,Python內功是非常重要的,Python語言基礎知識和基本數據結構的熟練掌握是理解和運用其他擴展庫的必備條件之一。所以,本書前11章把重點和主要篇幅放在了Python編程基礎知識的介紹上,通過大量案例介紹Python在實際開發中的應用,然后在最后兩章介紹數據庫編程和Python在數據分析、處理與科學計算可視化等領域的應用。關于其他應用領域的擴展庫可以參考本書最后的附錄,并結合自己的專業領域查閱相關文檔。全書共13章,主要內容組織如下。
第1章管中窺豹: Python概述。介紹Python語言的特點,Python程序文件名,擴展庫的管理與使用,Python代碼編寫規范和優化建議。
第2章萬丈高樓平地起:
運算符、表達式與內置對象。講解Python對象模型,數字、字符串、列表、元組、字典、集合等基本數據類型,運算符與表達式,內置函數。
第3章玄之又玄,眾妙之門:
詳解Python序列結構。講解列表、元組、字典、集合等序列的常用方法和基本操作,切片操作,列表推導式,元組與生成器推導式,序列解包,字典、集合基本操作和常用方法。
第4章反者,道之動:
程序控制結構。講解Python選擇結構,for循環與while循環,帶有else子句的循環結構,break與continue語句,選擇結構與循環結構的綜合運用。
第5章代碼復用技術(一):
函數。講解函數的定義與使用,普通位置參數、關鍵參數、默認值參數、長度可變參數等不同參數類型,全局變量與局部變量,參數傳遞時的序列解包,return語句,lambda表達式。
第6章代碼復用技術(二):
面向對象程序設計。講解類的定義與繼承,self與cls參數,類成員與實例成員,私有成員與公有成員,特殊方法與運算符重載。
第7章文本處理(一):
字符串。講解字符串編碼格式,字符串格式化、替換、分割、連接、排版等基本操作方法。
第8章文本處理(二):
正則表達式。講解正則表達式語法、正則表達式對象、子模式與match對象,以及Python正則表達式模塊re的應用。
第9章數據永久化:
文件內容操作。講解文件操作基本知識與Python文件對象,文本文件內容讀寫,二進制文件內容讀寫與對象序列化,Word、Excel等常見二進制文件的內容讀寫。
第10章文件與文件夾操作。講解文件復制、移動、重命名、遍歷等文件級操作以及目錄操作有關知識。
第11章代碼質量保障:
異常處理結構與單元測試。講解Python異常類層次結構與自定義異常類,多種不同形式的異常處理結構,以及單元測試。
第12章數據庫應用開發。講解SQLite數據庫的基本特點與用法,以及Python對SQLite數據庫和Access、MySQL、MS SQL Server等數據庫的操作方法。
第13章數據分析與科學計算可視化。講解Python標準庫statistics以及numpy、scipy、pandas、matplotlib等擴展庫的用法,講解數據處理、數據分析、數據可視化以及科學計算的有關內容。
本書特色
內容與Python最新版本同步。本書完全面向Python 3.x,全部案例代碼使用Python 3.5.x和Python 3.6.x編寫,大部分內容同樣適用于Python 3.4.x。
信息量大、知識點密集。全書沒有多余的文字和軟件安裝截圖,充分利用寶貴的篇幅來介紹和講解盡可能多的知識點,絕對物超所值。本書作者具有15年程序設計教學經驗,講授過匯編語言、C/C /C#、Java、PHP、Python等多門程序設計語言,并編寫過大量的應用程序。在本書內容的組織和安排上,結合了作者多年教學與開發過程中積累的許多案例,并巧妙地糅合進了相應的章節。
案例豐富,實用性強,注釋量大。精選多個領域中的經典案例,并且每段代碼都配有大量注釋,大幅度縮短了讀者理解代碼所需要的時間。
語言精練,代碼優雅。使用最簡練的語言和代碼介紹Python語法和應用,完美詮釋Pythonic真諦。
深度與廣度兼顧。本書對Python內部工作原理進行一定程序的剖析,并適當介紹Python代碼優化和安全編程的有關知識,可以滿足不同層次讀者的需要,讀者對書中內容每多讀一遍都會有新的收獲和體會。
本書適用讀者
本書可以作為(但不限于):
會計、經濟、金融、心理學、統計、管理、人文社科以及其他非計算機專業本科或?频某绦蛟O計教材。如果作為本科非計算機專業程序設計語言公共課或選修課教材,建議采用64學時或48學時邊講邊練的教學模式。
具有一定Python基礎的讀者進階學習資料。
打算利用業余時間學習一門快樂的程序設計語言并編寫幾個小程序來娛樂的讀者首選學習資料。
少數對編程具有濃厚興趣和天賦的中學生課外閱讀資料。
教學資源
本書提供全套教學課件、源代碼、課后習題答案與分析、考試題庫、教學視頻、教案以及授課計劃和學時分配表,需要配套資源,可以登錄清華大學出版社官方網站(www.tup.com.cn)下載或與作者聯系索取,作者的微信公眾號是Python小屋,電子郵箱地址是dongfuguo2005@126.com。
由于時間倉促,作者水平有限,書中難免存在疏漏之處,還請同行指正并通過作者聯系方式進行反饋,作者將不定期在微信公眾號更新勘誤并實名感謝。
感謝
首先感謝父母的養育之恩,在當年那么艱苦的條件下還堅決支持我讀書,而沒有讓我像其他同齡的孩子一樣輟學。感謝姐姐、姐夫多年來對我的愛護以及在老家對父母的照顧,感謝善良的弟弟、弟媳在老家對父母的照顧,正是有了你們,我才能在遠離家鄉的城市安心工作。感謝我的妻子在生活中對我的大力支持,也感謝懂事的女兒在我工作時能夠在旁邊安靜地讀書而盡量不打擾我,并在定稿前和媽媽一起幫我閱讀全書并檢查出了幾個錯別字。
感謝每一位讀者,感謝您在茫茫書海中選擇了這本書,衷心祝愿您能夠從本書中受益,學到您需要的知識!同時也期待每一位讀者的熱心反饋,隨時歡迎指出書中的不足!
本書在編寫出版過程中得到清華大學出版社的大力支持和幫助,在此表示衷心的感謝。
董付國于山東煙臺
2017年10月
目錄
第1章第1章管中窺豹: Python概述1
1.1Python是這樣一種語言1
1.2Python版本之爭1
1.3Python編程規范與代碼優化建議2
1.4Anaconda3開發環境的安裝與使用3
1.5安裝擴展庫的幾種方法5
1.6標準庫與擴展庫中對象的導入與使用6
1.6.1import模塊名[as 別名]6
1.6.2from模塊名import對象名[as別名]7
1.6.3from模塊名 import *7
1.7__name__屬性的作用8
本章小結8
習題9
第2章第2章萬丈高樓平地起: 運算符、表達式與內置對象10
2.1Python常用內置對象10
2.1.1常量與變量11
2.1.2數字12
2.1.3字符串與字節串15
2.1.4列表、元組、字典、集合16
2.2Python運算符與表達式17
2.2.1算術運算符18
2.2.2關系運算符19
2.2.3成員測試運算符in與同一性測試運算符is20
2.2.4位運算符與集合運算符21
2.2.5邏輯運算符22
2.2.6矩陣乘法運算符@22
2.2.7補充說明23
2.3Python關鍵字簡要說明23〖1〗〖2〗Python程序設計基礎(第2版)〖1〗目錄〖2〗2.4Python常用內置函數用法精要25
2.4.1類型轉換與類型判斷27
2.4.2最值與求和31
2.4.3基本輸入輸出32
2.4.4排序與逆序33
2.4.5枚舉34
2.4.6map()、reduce()、filter()35
2.4.7range()37
2.4.8zip()38
2.4.9eval()39
2.5精彩案例賞析39
本章小結40
習題41
第3章第3章玄之又玄,眾妙之門: 詳解Python序列結構42
3.1列表: 打了激素的數組42
3.1.1列表創建與刪除43
3.1.2列表元素訪問44
3.1.3列表常用方法44
3.1.4列表對象支持的運算符50
3.1.5內置函數對列表的操作51
3.1.6列表推導式語法與應用案例52
3.1.7切片操作的強大功能56
3.2元組: 輕量級列表59
3.2.1元組創建與元素訪問59
3.2.2元組與列表的異同點60
3.2.3生成器推導式61
3.3字典: 反映對應關系的映射類型62
3.3.1字典創建與刪除62
3.3.2字典元素的訪問63
3.3.3元素的添加、修改與刪除64
3.3.4標準庫collections中與字典有關的類65
3.4集合: 元素之間不允許重復66
3.4.1集合對象的創建與刪除66
3.4.2集合操作與運算67
3.4.3集合應用案例69
3.5序列解包的多種形式和用法71
本章小結73
習題74
第4章第4章反者,道之動: 程序控制結構75
4.1條件表達式75
4.2選擇結構77
4.2.1單分支選擇結構77
4.2.2雙分支選擇結構78
4.2.3多分支選擇結構79
4.2.4選擇結構的嵌套80
4.3循環結構81
4.3.1for循環與while循環81
4.3.2break與continue語句82
4.3.3循環代碼優化技巧83
4.4精彩案例賞析84
本章小結90
習題90
第5章第5章代碼復用技術(一): 函數92
5.1函數定義與使用92
5.1.1基本語法92
5.1.2函數嵌套定義、可調用對象與修飾器94
5.1.3函數遞歸調用96
5.2函數參數97
5.2.1位置參數99
5.2.2默認值參數99
5.2.3關鍵參數101
5.2.4可變長度參數101
5.2.5傳遞參數時的序列解包102
5.3變量作用域103
5.4lambda表達式105
5.5生成器函數設計要點107
5.6精彩案例賞析109
本章小結126
習題127
第6章第6章代碼復用技術(二): 面向對象程序設計128
6.1類的定義與使用128
6.2數據成員與成員方法129
6.2.1私有成員與公有成員129
6.2.2數據成員130
6.2.3成員方法、類方法、靜態方法、抽象方法131
6.2.4屬性133
6.2.5類與對象的動態性、混入機制136
6.3繼承、多態137
6.3.1繼承137
6.3.2多態139
6.4特殊方法與運算符重載139
6.5精彩案例賞析142
6.5.1自定義隊列142
6.5.2自定義棧145
本章小結148
習題148
第7章第7章文本處理(一): 字符串150
7.1字符串編碼格式簡介151
7.2轉義字符與原始字符串152
7.3字符串格式化153
7.3.1使用%符號進行格式化153
7.3.2使用format()方法進行字符串格式化154
7.3.3格式化的字符串常量155
7.3.4使用Template模板進行格式化156
7.4字符串常用操作156
7.4.1find()、rfind()、index()、rindex()、count()156
7.4.2split()、rsplit()、partition()、rpartition()157
7.4.3join()158
7.4.4lower()、upper()、capitalize()、title()、swapcase()159
7.4.5replace()、maketrans()、translate()160
7.4.6strip()、rstrip()、lstrip()161
7.4.7startswith()、endswith()161
7.4.8isalnum()、isalpha()、isdigit()、isdecimal()、isnumeric()、isspace()、
isupper()、islower()162
7.4.9center()、ljust()、rjust()、zfill()163
7.4.10字符串對象支持的運算符163
7.4.11適用于字符串對象的內置函數165
7.4.12字符串對象的切片操作167
7.5字符串常量167
7.6中英文分詞168
7.7漢字到拼音的轉換169
7.8精彩案例賞析170
本章小結173
習題173
第8章第8章文本處理(二): 正則表達式174
8.1正則表達式語法174
8.1.1正則表達式基本語法174
8.1.2正則表達式擴展語法175
8.1.3正則表達式集錦176
8.2直接使用正則表達式模塊re處理字符串177
8.3使用正則表達式對象處理字符串181
8.4match對象183
8.5精彩案例賞析185
本章小結186
習題187
第9章第9章數據永久化: 文件內容操作188
9.1文件操作基本知識189
9.1.1內置函數open()189
9.1.2文件對象屬性與常用方法190
9.1.3上下文管理語句with191
9.2文本文件內容操作案例精選192
9.3二進制文件操作案例精選196
9.3.1使用pickle模塊讀寫二進制文件196
9.3.2使用struct模塊讀寫二進制文件198
9.3.3使用shelve模塊操作二進制文件199
9.3.4其他常見類型二進制文件操作案例199
本章小結206
習題206
第10章第10章文件與文件夾操作207
10.1os模塊207
10.2os.path模塊209
10.3shutil模塊211
10.4精彩案例賞析212
本章小結215
習題216
第11章第11章代碼質量保障: 異常處理結構與單元測試217
11.1異常處理結構217
11.1.1異常的概念與表現形式217
11.1.2Python內置異常類層次結構218
11.1.3異常處理結構220
11.1.4斷言與上下文管理語句225
11.2單元測試unittest225
本章小結228
習題229
第12章數據庫應用開發230
12.1使用Python操作SQLite數據庫230
12.1.1Connection對象231
12.1.2Cursor對象232
12.1.3Row對象235
12.2使用Python操作其他關系型數據庫235
12.2.1操作Access數據庫236
12.2.2操作MS SQL Server數據庫237
12.2.3操作MySQL數據庫238
12.3操作MongoDB數據庫240
12.4精彩案例賞析242
本章小結244
習題245
第13章數據分析與科學計算可視化246
13.1擴展庫numpy簡介246
13.2科學計算擴展庫scipy256
13.2.1數學、物理常用常數與單位模塊constants256
13.2.2特殊函數模塊special257
13.2.3信號處理模塊signal257
13.2.4圖像處理模塊ndimage259
13.3擴展庫pandas簡介264
13.4統計分析標準庫statistics用法簡介269
13.5matplotlib272
13.5.1繪制正弦曲線272
13.5.2繪制散點圖272
13.5.3繪制餅狀圖274
13.5.4繪制帶有中文標簽和圖例的圖275
13.5.5繪制圖例標簽中帶有公式的圖275
13.5.6使用pyplot繪制,多個圖形單獨顯示276
13.5.7繪制三維參數曲線278
13.5.8繪制三維圖形278
13.6創建詞云280
本章小結282
習題282
附錄附錄精彩在繼續283
附錄AGUI開發283
附錄B計算機圖形學編程286
附錄C圖像編程289
附錄D密碼學編程292
附錄E系統運維292
附錄FWindows系統編程293
附錄G軟件分析與逆向工程295
參考文獻297