基本介紹
內容簡介
Python是目前流行的腳本語言之一。本書由淺入深、循序漸進地為讀者講解了如何使用Python進行編程開發。全書內容共分三篇,分為入門篇、高級篇和案例篇。入門篇包括Python的認識和安裝、開發工具簡介、Python基本語法、數據結構與算法、多媒體編程、系統套用、圖像處理和GUI編程等內容。高級篇包括用Python運算元據庫、進行Web開發、網路編程、科學計算程多執行緒編程等內容。案例篇選擇了3個案例演示了Python在Windows系統最佳化、大數據處理和遊戲開發方面的套用。本書針對Python的常用擴展模組給出了詳細的語法介紹,並且給出了典型案例,通過對本書的學習,讀者能夠很快地使用Python進行編程開發。
作為一門語言教程書籍。 這本書講得非常不錯! 特別是作者將各個概念和實現方式放在一起講解,讓你知其然知其所以然,顯得彌足珍貴。而且在我看過的那么多編程書籍里,這本書的許多講解和理念都很到位, 作為Python入門書來說,絕對是數一數二的。
深圳亞鼎科技有限公司 信息系統部總監 方擎
對於初學者,尤其是以前對編程沒什麼經驗的人來說,這是一本很適合的書。書的章節內容劃分合理,從最基礎的講起,循序漸進,讓你逐步掌握Python的各種知識。尤其是裡面的代碼,是作者多年開發經驗的總結,有很強的學習價值。
IBM中國商業價值研究院高級分析師 劉京華
在騰訊工作的第一個月,需要用到Python來做項目。我用三天時間把這本書看完,並馬上寫代碼付諸實踐,並得到不錯的效果,感謝作者!
騰訊數據商業產品架構師 韓偉
作者簡介
楊佩璐,雙碩士學位,副教授,現就職于山東中醫藥大學,長期從事計算機套用技術專業的教學與科研工作,從事人工智慧,計算機控制等方面的工作與研究。
圖書目錄
第1部分入門篇
第1章初識Python2
1.1Python是什麼2
1.2Python有什麼優點3
1.3其他程式設計語言中的Python4
1.4快速搭建Python開發環境5
1.4.1哪些系統中可使用Python5
1.4.2Python的下載和安裝6
1.4.3用VS2008編譯Python源碼8
1.4.4Python開發工具:Vim9
1.4.5Python開發工具:Emacs13
1.4.6Python開發工具:PythonWin16
1.4.7其他的Python開發工具17
1.5第一個Python程式19
1.5.1從“Hello,Python!”開始19
1.5.2Python的互動解釋器20
1.6本章小結21
第2章Python起步必備22
2.1Python代碼的組織形式22
2.1.1用縮進來分層22
2.1.2兩種代碼注釋的方式23
2.1.3Python語句的斷行23
2.2Python的基本輸入輸出函式25
2.2.1接收輸入的input函式25
2.2.2輸出內容的print函式26
2.3Python對中文的支持27
2.3.1Python3之前版本如何使用中文27
2.3.2更全面的中文支持29
2.4簡單實用的Python計算器29
2.4.1直接進行算術運算30
2.4.2math模組提供豐富的數學函式30
2.4.3Python對大整數的支持31
2.5本章小結32
第3章Python數據類型與基本語句33
3.1Python數據類型:數字33
3.1.1整型和浮點型33
3.1.2運算符34
3.2Python數據類型:字元串36
3.2.1Python中的字元串36
3.2.2字元串中的轉義字元36
3.2.3操作字元串37
3.2.4字元串的索引和分片39
3.2.5格式化字元串40
3.2.6字元串、數字類型的轉換40
3.2.7原始字元串(RawString)41
3.3Python數據類型:列表和元組42
3.3.1創建和操作列表42
3.3.2創建和操作元組43
3.4Python數據類型:字典43
3.5Python數據類型:檔案44
3.6Python的流程控制語句46
3.6.1分支結構:if語句46
3.6.2循環結構:for語句48
3.6.3循環結構:while語句50
3.7本章小結51
第4章可復用的函式與模組52
4.1Python自定義函式52
4.1.1函式聲明52
4.1.2函式調用53
4.2參數讓函式更有價值54
4.2.1有默認值的參數54
4.2.2參數的傳遞方式55
4.2.3如何傳遞任意數量的參數56
4.2.4用參數返回計算結果57
4.3變數的作用域57
4.4最簡單的函式:用lambda聲明函式58
4.5可重用結構:Python模組59
4.5.1Python模組的基本用法59
4.5.2Python在哪裡查找模組61
4.5.3是否需要編譯模組62
4.5.4模組也可獨立運行63
4.5.5如何查看模組提供的函式名64
4.6用包來管理多個模組65
4.7本章小結66
第5章數據結構與算法67
5.1表、棧和佇列67
5.1.1表67
5.1.2棧68
5.1.3佇列70
5.2樹和圖72
5.2.1樹72
5.2.2二叉樹73
5.2.3圖76
5.3查找與排序78
5.3.1查找78
5.3.2排序79
5.4本章小結82
第6章面向對象的Python83
6.1面向對象編程概述83
6.1.1Python中的面向對象思想83
6.1.2類和對象84
6.2在Python中定義和使用類84
6.2.1類的定義85
6.2.2類的使用86
6.3類的屬性和方法87
6.3.1類的屬性87
6.3.2類的方法88
6.4類的繼承91
6.4.1使用繼承91
6.4.2Python的多重繼承92
6.5在類中重載方法和運算符94
6.5.1方法重載94
6.5.2運算符重載95
6.6在模組中定義類97
6.7本章小結98
第7章異常處理與程式調試99
7.1異常的處理99
7.1.1用try語句捕獲異常99
7.1.2常見異常的處理101
7.1.3多重異常的捕獲102
7.2用代碼拋出異常103
7.2.1用raise拋出異常103
7.2.2assert——簡化的raise語句104
7.2.3自定義異常類105
7.3使用pdb調試Python腳本106
7.3.1運行語句106
7.3.2運行表達式107
7.3.3運行函式107
7.3.4設定硬斷點108
7.3.5pdb調試命令109
7.4在PythonWin中調試程式111
7.5本章小結113
第8章Python多媒體編程114
8.1使用PyOpenGL繪製三維圖形114
8.1.1安裝PyOpenGL114
8.1.2使用PyOpenGL創建視窗115
8.1.3繪製文字116
8.1.4繪製二維圖形118
8.1.5繪製三維圖形120
8.1.6紋理映射122
8.2播放音頻檔案125
8.2.1使用DirectSound125
8.2.2使用WMPlayer.OCX126
8.3PyGame128
8.3.1安裝PyGame128
8.3.2使用PyGame編寫簡單的遊戲129
8.4本章小結132
第9章使用PIL處理圖片133
9.1PIL概述133
9.1.1安裝PIL133
9.1.2PIL簡介135
9.2使用PIL處理圖片137
9.2.1轉換圖片格式137
9.2.2生成縮略圖139
9.2.3為圖片添加Logo142
9.3本章小結147
第10章系統編程148
10.1訪問Windows註冊表148
10.1.1註冊表概述148
10.1.2使用Python操作註冊表149
10.1.3查看系統啟動項152
10.1.4修改IE153
10.2檔案和目錄156
10.2.1檔案目錄常用函式156
10.2.2批量重命名158
10.2.3代碼框架生成器159
10.3生成執行檔160
10.3.1安裝py2exe161
10.3.2使用py2exe生成執行檔161
10.3.3使用cx_freeze生成執行檔163
10.4運行其他程式164
10.4.1使用os.system()函式運行其他程式164
10.4.2使用ShellExecute函式運行其他程式165
10.4.3使用CreateProcess函式運行其他程式166
10.4.4使用ctypes調用kernel32.dll中的函式167
10.5本章小結168
第11章使用PythonWin編寫GUI169
11.1WindowsGUI編程概述169
11.1.1使用WindowsAPI創建視窗169
11.1.2使用MFC創建視窗172
11.2創建對話框172
11.2.1創建對話框173
11.2.2向對話框添加控制項174
11.2.3使用DLL檔案中的資源176
11.2.4處理按鈕訊息177
11.3創建選單179
11.3.1創建選單179
11.3.2使用DLL中的選單182
11.3.3處理選單訊息184
11.4本章小結185
第12章使用tkinter編寫GUI186
12.1tkinter概述186
12.1.1創建簡單的視窗186
12.1.2向視窗中添加組件187
12.2使用組件188
12.2.1組件分類188
12.2.2組件布局188
12.2.3使用按鈕189
12.2.4使用文本框190
12.2.5使用標籤192
12.2.6使用選單193
12.2.7使用單選框和複選框195
12.2.8繪製圖形197
12.3事件處理199
12.3.1事件表示199
12.3.2回響事件201
12.4創建對話框204
12.4.1使用標準對話框204
12.4.2創建自定義對話框208
12.5本章小結210
第13章使用wxPython編寫GUI211
13.1wxPython概述211
13.1.1安裝wxPython211
13.1.2創建視窗212
13.2組件214
13.2.1面板214
13.2.2按鈕215
13.2.3標籤217
13.2.4文本框218
13.2.5單選框和複選框221
13.2.6使用sizer布置組件222
13.3對話框224
13.3.1訊息框和標準對話框224
13.3.2創建自定義對話框226
13.4選單227
13.4.1創建選單228
13.4.2綁定選單事件230
13.5一個簡單的文本編輯器231
13.5本章小結234
第14章使用PyGTK編寫GUI235
14.1PyGTK概述235
14.1.1PyGTK安裝235
14.1.2創建視窗236
14.2組件238
14.2.1標籤238
14.2.2按鈕241
14.2.3容器組件243
14.2.4文本框246
14.2.5單選框和複選框249
14.3訊息框和對話框250
14.3.1訊息框250
14.3.2標準對話框252
14.3.3自定義對話框254
14.4使用選單256
14.4.1創建選單256
14.4.2選單事件259
14.5資源檔案260
14.5.1使用Glade創建資源檔案261
14.5.2使用資源檔案263
14.6本章小結264
第15章使用PyQT編寫GUI265
15.1PyQt概述265
15.1.1PyQt的安裝265
15.1.2使用PyQt創建視窗266
15.2組件267
15.2.1標籤267
15.2.2布局組件和空白項268
15.2.3按鈕270
15.2.4文本框272
15.2.5單選框和複選框275
15.2.6選單276
15.3創建對話框278
15.3.1訊息框和標準對話框279
15.3.2自定義對話框283
15.4使用資源285
15.4.1使用QtDesigner創建資源檔案285
15.4.2使用資源檔案287
15.5本章小結288
第2部分高級篇
第16章Python與資料庫290
16.1連線Access資料庫290
16.1.1使用ODBC連線Access資料庫290
16.1.2使用DAO連線Access資料庫294
16.1.3使用ADO連線Access資料庫295
16.2使用MySQL資料庫296
16.2.1安裝MySQL297
16.2.2連線到MySQL299
16.3嵌入式資料庫SQLite301
16.4本章小結302
第17章PythonWeb套用303
17.1開源Web套用伺服器Zope303
17.1.1安裝Zope303
17.1.2使用Zope管理界面305
17.1.3創建模板308
17.1.4添加Python腳本310
17.2使用Plone內容管理系統312
17.2.1安裝Plone312
17.2.2安裝Plone外掛程式314
17.3在MicrosoftIIS中使用Python316
17.3.1安裝MicrosoftIIS317
17.3.2在ASP中使用Python腳本319
17.3.3一個簡單的例子321
17.4在Apache中使用Python325
17.4.1安裝配置Apache325
17.4.2安裝mod_python327
17.4.3使用PythonSeverPages創建留言板328
17.5本章小結331
第18章Python網路編程332
18.1使用socket模組332
18.1.1網路編程概述332
18.1.2使用socket模組建立網路通信333
18.1.3在區域網路中傳輸檔案338
18.2使用urllib、httplib和ftplib341
18.2.1使用Python訪問網站341
18.2.2訪問FTP345
18.3使用poplib和smtplib模組收發郵件350
18.3.1檢查E—mail350
18.3.2傳送E—mail353
18.4本章小結357
第19章處理HTML與XML358
19.1處理HTML358
19.1.1HTMLParser類簡介358
19.1.2獲取頁面圖片地址359
19.1.3查看天氣預報361
19.2處理XML366
19.2.1XML基礎367
19.2.2文檔類型定義368
19.2.3命名空間370
19.3使用Python處理XML370
19.3.1使用xml.parsers.expat處理XML371
19.3.2使用xml.sax處理XML373
19.3.3使用xml.dom處理XML374
19.4簡單的RSS閱讀器375
19.5本章小結378
第20章功能強大的正則表達式379
20.1正則表達式概述379
20.1.1正則表達式的基本元字元379
20.1.2常用正則表達式分析380
20.2支持正則表達式的re模組381
20.2.1用match函式進行搜尋381
20.2.2用sub函式進行內容替換382
20.2.3用split函式分割字元串383
20.3編譯生成正則表達式對象383
20.3.1以“\”開頭的元字元383
20.3.2用compile函式編譯正則表達式385
20.3.3在正則表達式中使用原始字元串385
20.4用正則表達式對象提速386
20.4.1使用match方法匹配和搜尋386
20.4.2使用sub方法替換內容387
20.4.3使用split方法分割字元串388
20.5正則表達式中的分組389
20.5.1分組的概述389
20.5.2分組的擴展語法390
20.6匹配和搜尋的結果對象:Match對象391
20.6.1使用Match對象處理組391
20.6.2使用Match對象處理索引392
20.7使用正則表達式處理檔案393
20.8本章小結395
第21章科學計算396
21.1NumPy和SciPy簡介396
21.1.1安裝NumPy和SciPy396
21.1.2NumPy簡介398
21.1.3SciPy簡介399
21.2矩陣運算和解線性方程組400
21.2.1矩陣運算400
21.2.2解線性方程組402
21.3使用Matplotlib繪製函式圖形403
21.3.1安裝Matplotlib403
21.3.2使用Matplotlib繪製圖形405
21.4本章小結407
第22章Python擴展和嵌入408
22.1用C/C++擴展Python408
22.1.1VS2008編譯環境的設定408
22.1.2Python擴展程式的結構414
22.1.3在Python擴展中使用MFC416
22.2在C/C++中嵌入Python420
22.2.1高層次的嵌入Python420
22.2.2較低層次嵌入Python421
22.2.3在C中嵌入Python實例426
22.3通過SWIG編寫Python擴展428
22.3.1在VS中使用SWIG428
22.3.3SWIG接口檔案的語法簡介431
22.4Boost.Python使程式更簡單433
22.4.1下載編譯Boost.Python433
22.4.2使用Boost.Python簡化擴展和嵌入435
22.4.3使用Pyste生成代碼439
22.5本章小結440
第23章多執行緒編程441
23.1執行緒基礎441
23.1.1創建執行緒441
23.1.2Thread對象中的方法442
23.2執行緒同步445
23.2.1簡單的執行緒同步445
23.2.2使用條件變數保持執行緒同步447
23.2.3使用佇列讓執行緒同步448
23.3執行緒間通信449
23.3.1Event對象的方法449
23.3.2使用Event對象實現執行緒間通信450
23.4微執行緒——StacklessPython450
23.4.1StacklessPython概述451
23.4.2使用微執行緒453
23.5本章小結454
第3部分案例篇
第24章案例1:用Python最佳化Windows456
24.1案例概述456
24.2創建圖形化界面457
24.2.1編寫腳本創建GUI457
24.2.2回響選單事件459
24.3清理垃圾檔案461
24.3.1遍歷目錄462
24.3.2掃描垃圾檔案463
24.3.3使用多執行緒464
24.3.4掃描所有磁碟465
24.3.5刪除垃圾檔案467
24.4搜尋檔案469
24.4.1搜尋大檔案469
24.4.2按名稱搜尋檔案471
24.5本章小結472
第25章案例2:用Python玩轉大數據473
25.1案例概述473
25.1.1了解大數據處理方式473
25.1.2處理日誌檔案474
25.1.3案例目標475
25.2日誌檔案的分割476
25.3編寫Map函式處理小檔案477
25.4編寫Reduce函式479
25.5本章小結480
第26章案例3:植物大戰殭屍481
26.1案例概述481
26.1.1遊戲效果481
26.1.2遊戲規劃設計482
26.2收集資源483
26.2.1收集圖片素材483
26.2.3收集聲效素材484
26.3編寫初始腳本485
26.3.1定義遊戲初始環境485
26.3.2導入遊戲素材486
26.4編寫遊戲核心腳本489
26.4.1編寫遊戲循環腳本489
26.4.2處理事件——回響玩家的操作490
26.4.3添加角色到遊戲492
26.4.4更新角色狀態493
26.4.5重繪畫面494
26.4.6判斷角色交戰狀態494
26.4.7判斷勝負狀態495
26.5本章小結496
序言
Python是一種功能強大的腳本語言。使用Python可以完成從文本處理到創建複雜的三維圖形等各種工作。在企業級套用中,由於Python具有簡潔的語法和豐富的擴展模組,因此,使用Python可以大幅縮短開發周期,節約成本。
另外,Jython還可以在Java中使用Python,通過Python的靈活性來提高Java在企業級套用的效率。在Web方面,有很多基於Python的流行Web框架,如Zope/Plone、Django、TurboGear等。通過這些Web框架,程式設計師可以使用Python快速構建安全、功能強大的網站。
在數值計算與工程套用方面,Python與傳統的C和Fortran相比,更加靈活、簡潔,並且可以十分方便地創建GUI界面。通過使用SciPy模組和Matplotlib繪圖庫可以進行數值計算,實現工程數據的可視化。
如何學習本書
本書內容共分三篇26章,分別為入門篇、高級篇和案例篇。
入門篇為第1章至第15章,從初識Python開始,由淺入深地介紹了Python的安裝、開發工具的使用、Python數據類型與基本語句、可復用的函式與模組、數據結構與算法、面向對象的Python、異常處理與程式調試、Python多媒體編程、使用PIL處理圖片、系統編程、使用Python的GUI編程等內容。其中,第11章至第15章專門對Python的幾種GUI編程工具進行了講解,讀者可以比較各種GUI編程工具,根據自己的興趣及以前所學的知識,選擇適合自己使用的GUI編程工具。
高級篇為第16章至第23章,主要介紹了用Python運算元據庫、進行Web開發、網路編程、科學計算、多執行緒編程等內容。其中,第22章介紹了Python的擴展和嵌入,需要讀者有C/C++的相關背景,如果讀者不會使用C/C++進行編程,可以跳過該章。在大部分開發場景中,不掌握這部分知識也不影響用Python編程。
案例篇為第24章至第26章,每章介紹一個案例,包括用Python最佳化Windows、用Python處理大數據和用Python開發《植物大戰殭屍》遊戲。通過對這3個案例的學習,可進一步鞏固讀者前面所學的知識。
本書以Python 3.x為基礎進行講解,並在與Python 2.x有區別的地方加上了相關介紹,使Python 2.x和Python 3.x的讀者都能使用本書。
本書特色
內容全面,對Python各方面的知識都做了系統詳盡的講解。
結構清晰,全書整體結構上遵循從易到難、由淺入深的順序。
內容新穎,結合當前最新的Python 3.x版本進行講解。
實用性強,本書在各章節中都有大量程式示例,並在最後一篇詳細講解了3個不同方向的開發實例。
實例豐富,對於每一個知識點,書中都通過相應的示例進行講解。
適合的讀者
Python初學者
程式設計人員
編程愛好者
本科及大專院校學生
需要進行科學計算的工程人員
本書由楊佩璐(山東中醫藥大學)、宋強(安陽工學院)共同編寫,其中楊佩璐編寫了本書的第1~13章,宋強編寫了本書的第14~20章,同時參與編寫的還有徐新其、張俊華、趙桂芹、張增強、劉桂珍、李傑、曾智海、代得新、邵星星、過建軍、王正江、朱林鑫、張偉傑、田亮亮,在此一併表示感謝。
在本書的編寫過程中,編者竭盡全力,不敢有絲毫疏忽,並對所有程式都進行了上機調試,但由於Python發展非常迅速,仍會有不同版本的差別,因此需要讀者多加注意。另外,書中難免有不足之處,望廣大讀者批評指正。
編者
2014年1月