Python 核心編程, 3/e (Core Python Applications Programming, 3/e) Python核心编程(第3版)

衛斯理•春(Wesley Chun)

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

商品描述

<內容簡介>

Python核心編程(第3版)》是經典暢銷圖書《Python核心編程(第二版)》的全新升級版本,總共分為3部分。第1部分為講解了Python的一些通用應用,包括正則表達式、網絡編程、Internet客戶端編程、多線程編程、GUI編程、數據庫編程、Microsoft;Office編程、擴展Python等內容。第2部分講解了與Web開發相關的主題,包括Web客戶端和服務器、CGI和WSGI相關的Web編程、Django;Web框架、雲計算、高級Web服務。第3部分則為一個補充/實驗章節,包括文本處理以及一些其他內容。
《Python核心編程(第3版)》適合具有一定經驗的Python開發人員閱讀。

 

<目錄>
第1部分;通用應用主題

第1章;正則表達式;2
1.1;簡介/動機;3
1.2;特殊符號和字符;5
1.2.1;使用​​擇一匹配符號匹配多個正則表達式模式;6
1.2.2;匹配任意單個字符;6
1.2.3;從字符串起始或者結尾或者單詞邊界匹配;7
1.2.4;創建字符集;8
1.2.5;限定範圍和否定;8
1.2.6;使用閉包操作符實現存在性和頻數匹配;9
1.2.7;表示字符集的特殊字符;10
1.2.8;使用圓括號指定分組;10
1.2.9;擴展表示法;11
1.3;正則表達式和Python語言;11
1.3.1;re模塊:核心函數和方法;12
1.3.2;使用compile()函數編譯正則表達式;13
1.3.3;匹配對像以及group()和groups()方法;14
1.3.4;使用match()方法匹配字符串;14
1.3.5;使用search()在一個字符串中查找模式(搜索與匹配的對比);15
1.3.6;匹配多個字符串;16
1.3.7;匹配任何單個字符(.);16
1.3.8;創建字符集([;]);17
1.3.9;重複、特殊字符以及分組;18
1.3.10;匹配字符串的起始和結尾以及單詞邊界;20
1.3.11;使用findall()和finditer()查找每一次出現的位置;21
1.3.12;使用sub()和subn()搜索與替換;22
1.3.13;在限定模式上使用split()分隔字符串;23
1.3.14;擴展符號;24
1.3.15;雜項;27
1.4;一些正則表達式示例;28
1.5;更長的正則表達式示例;33
1.5.1;匹配字符串;35
1.5.2;搜索與匹配……還有貪婪;37
1.6;練習;39
第2章;網絡編程;42
2.1;簡介;43
2.2;客戶端/服務器架構;43
2.2.1;硬件客戶端/服務器架構;43
2.2.2;軟件客戶端/服務器架構;44
2.2.3;銀行出納員作為服務器嗎;44
2.2.4;客戶端/服務器網絡編程;45
2.3;套接字:通信端點;46
2.3.1;套接字;46
2.3.2;套接字地址:主機-埠對;47
2.3.3;面向連接的套接字與無連接的套接字;47
2.4;Python中的網絡編程;48
2.4.1;socket()模塊函數;49
2.4.2;套接字對象(內置)方法;49
2.4.3;創建TCP服務器;51
2.4.4;創建TCP客戶端;54
2.4.5;執行TCP服務器和客戶端;56
2.4.6;創建UDP服務器;58
2.4.7;創建UDP客戶端;59
2.4.8;執行UDP服務器和客戶端;60
2.4.9;socket模塊屬性;61
2.5;*SocketServer模塊;62
2.5.1;創建SocketServer;TCP服務器;63
2.5.2;創建SocketServer;TCP客戶端;64
2.5.3;執行TCP服務器和客戶端;65
2.6;*Twisted框架介紹;66
2.6.1;創建Twisted;Reactor;TCP服務器;66
2.6.2;創建Twisted;Reactor;TCP客戶端;67
2.6.3;執行TCP服務器和客戶端;69
2.7;相關模塊;69
2.8;練習;70
第3章;因特網客戶端編程;74
3.1;因特網客戶端簡介;75
3.2;文件傳輸;75
3.2.1;文件傳輸因特網協議;75
3.2.2;文件傳輸協議;76
3.2.3;Python和FTP;77
3.2.4;ftplib.FTP類的方法;77
3.2.5;交互式FTP示例;78
3.2.6;客戶端FTP程序示例;79
3.2.7;FTP的其他內容;80
3.3;網絡新聞;81
3.3.1;Usenet與新聞組;81
3.3.2;網絡新聞傳輸協議;82
3.3.3;Python和NNTP;83
3.3.4;nntplib.NNTP類方法;83
3.3.5;交互式NNTP示例;84
3.3.6;客戶端程序NNTP示例;85
3.3.7;NNTP的其他內容;89
3.4;電子郵件;90
3.4.1;電子郵件系統組件和協議;90
3.4.2;發送電子郵件;91
3.4.3;Python和SMTP;92
3.4.4;smtplib.SMTP類方法;92
3.4.5;交互式SMTP示例;93
3.4.6;SMTP的其他內容;94
3.4.7;接收電子郵件;94
3.4.8;POP和IMAP;95
3.4.9;Python和POP3;95
3.4.10;交互式POP3示例;96
3.4.11;poplib.POP3類方法;97
3.4.12;客戶端程序SMTP和POP3示例;98
3.4.13;Python和IMAP4;100
3.4.14;交互式IMAP4示例;100
3.4.15;imaplib.IMAP4類中的常用方法;101
3.5;實戰;102
3.5.1;生成電子郵件;102
3.5.2;解析電子郵件;104
3.5.3;基於Web的雲電子郵件服務;105
3.5.4;最佳實踐:安全、重構;106
3.5.5;Yahoo!;Mail;108
3.5.6;Gmail;112
3.6;相關模塊;115
3.6.1;電子郵件;115
3.6.2;其他因特網客戶端協議;115
3.7;練習;116
第4章;多線程編程;122
4.1;簡介/動機;123
4.2;線程和進程;124
4.2.1;進程;124
4.2.2;線程;124
4.3;線程和Python;125
4.3.1;全局解釋器鎖;125
4.3.2;退出線程;126
4.3.3;在Python中使用線程;126
4.3.4;不使用線程的情況;126
4.3.5;Python的threading模塊;128
4.4;thread模塊;128
4.5;threading模塊;132
4.5.1;Thr​​ead類;133
4.5.2;threading模塊的其他函數;139
4.6;單線程和多線程執行對比;140
4.7;多線程實踐;142
4.7.1;圖書排名示例;142
4.7.2;同步原語;149
4.7.3;鎖示例;149
4.7.4;信號量示例;156
4.8;生產者-消費者問題和Queue/queue模塊;159
4.9;線程的替代方案;162
4.9.1;subprocess模塊;163
4.9.2;multiprocessing模塊;163
4.9.3;concurrent.futures模塊;163
4.10;相關模塊;165
4.11;練習;165
第5章;GUI編程;168
5.1;簡介;169
5.1.1;Tcl、Tk和Tkinter;169
5.1.2;安裝和使用Tkinter;170
5.1.3;客戶端/服務端架構;170
5.2;Tkinter和Python編程;170
5.2.1;Tkinter模塊:添加Tk到應用中;171
5.2.2;GUI編程介紹;171
5.2.3;頂層窗口:Tkinter.Tk();173
5.2.4;Tk控件;173
5.3;Tkinter示例;174
5.3.1;Label控件;174
5.3.2;Button控件;175
5.3.3;Label和Button控件;175
5.3.4;Label、Button和Scale控件;176
5.3.5;偏函數應用示例;178
5.3.6;中級Tkinter示例;180
5.4;其他GUI簡介;185
5.4.1;Tk接口擴展(Tix);187
5.4.2;Python;MegaWidgets(PMW);188
5.4.3;wxWidgets和wxPython;188
5.4.4;GTK+和PyGTK;190
5.4.5;Tile/Ttk;192
5.5;相關模塊和其他GUI;194
5.6;練習;196
第6章;數據庫編程;198
6.1;簡介;199
6.1.1;持久化存儲;199
6.1.2;數據庫基本操作和SQL;199
6.1.3;數據庫和Python;201
6.2;Python的DB-API;203
6.2.1;模塊屬性;203
6.2.2;Connection對象;205
6.2.3;Cursor對象;206
6.2.4;類型對象和構造函數;207
6.2.5;關係數據庫;209
6.2.6;數據庫和Python:適配器;210
6.2.7;使用數據庫適配器的示例;210
6.2.8;數據庫適配器示例應用;215
6.3;ORM;226
6.3.1;考慮對象,而不是SQL;227
6.3.2;Python和ORM;227
6.3.3;員工角色數據庫示例;228
6.3.4;SQLAlchem​​y;229
6.3.5;SQLObject;240
6.4;非關係數據庫;245
6.4.1;NoSQL介紹;245
6.4.2;MongoDB;246
6.4.3;PyMongo:MongoDB和Python;246
6.4.4;總結;250
6.5;相關文獻;250
6.6;練習;252
第7章;*Microsoft;Office編程;256
7.1;簡介;257
7.2;使用Python進行COM客戶端編程;257
7.2.1;客戶端COM編程;258
7.2.2;入門;258
7.3;入門示例;259
7.3.1;Excel;259
7.3.2;Word;261
7.3.3;PowerPoint;262
7.3.4;Outlook;264
7.4;中級示例;266
7.4.1;Excel;266
7.4.2;Outlook;268
7.4.3;PowerPoint;273
7.4.4;總結;280
7.5;相關模塊/包;281
7.6;練習;281
第8章;擴展Python;286
8.1;簡介和動機;287
8.1.1;Python擴展簡介;287
8.1.2;什麼情況下需要擴展Python;288
8.1.3;什麼情況下不應該擴展Python;288
8.2;編寫Python擴展;289
8.2.1;創建應用代碼;289
8.2.2;根據樣板編寫封裝代碼;291
8.2.3;編譯;296
8.2.4;導入並測試;297
8.2.5;引用計數;300
8.2.6;線程和全局解釋器鎖;301
8.3;相關主題;302
8.3.1;SWIG;302
8.3.2;Pyrex;302
8.3.3;Cython;302
8.3.4;Psyco;303
8.3.5;PyPy;303
8.3.6;嵌入Python;304
8.4;練習;304

第2部分;Web開發

第9章;Web客戶端和服務器;306
9.1;簡介;307
9.1.1;Web應用:客戶端/服務器計算;307
9.1.2;因特網;308
9.2;Python;Web客戶端工具;310
9.2.1;統一資源定位符;310
9.2.2;urlparse模塊;312
9.2.3;urllib模塊/包;313
9.2.4;使用urllib2;HTTP驗證的示例;317
9.2.5;將HTTP驗證示例移植到Python;3中;319
9.3;Web客戶端;322
9.3.1;一個簡單的Web爬蟲/蜘蛛/機器人;322
9.3.2;解析Web頁面;328
9.3.3;可編程的Web瀏覽;333
9.4;Web(HTTP)服務器;336
9.5;相關模塊;339
9.6;練習;341
第10章;Web編程:CGI和WSGI;345
10.1;簡介;346
10.2;幫助Web服務器處理客戶端數據;346
10.2.1;CGI簡介;346
10.2.2;CGI應用程序;347
10.2.3;cgi模塊;348
10.2.4;cgitb模塊;348
10.3;構建CGI應用程序;349
10.3.1;構建Web服務器;349
10.3.2;建立表單頁;351
10.3.3;生成結果頁面;352
10.3.4;生成表單和結果頁面;353
10.3.5;全面交互的Web站點;357
10.4;在CGI中使用Unicode;362
10.5;高級CGI;364
10.5.1;mulitipart表單提交和文件上傳;364
10.5.2;多值字段;364
10.5.3;cookie;365
10.5.4;cookie和文件上傳;365
10.6;WSGI簡介;373
10.6.1;動機(替代CGI);373
10.6.2;服務器集成;374
10.6.3;外部進程;374
10.6.4;WSGI簡介;375
10.6.5;WSGI服務器;376
10.6.6;參考服務器;377
10.6.7;WSGI應用示例;378
10.6.8;中間件及封裝WSGI應用;378
10.6.9;在Python;3中使用WSGI;379
10.7;現實世界中的Web開發;380
10.8;相關模塊;380
10.9;練習;381
第11章;Web框架:Django;384
11.1;簡介;385
11.2;Web框架;385
11.3;Django簡介;386
11.4;項目和應用;390
11.4.1;在Django中創建項目;390
11.4.2;運行開發服務器;393
11.5;“Hello;World”應用(一個博客);394
11.6;創建模型來添加數據庫服務;396
11.6.1;設置數據庫;396
11.6.2;創建表;398
11.7;Python;應用shell;400
11.7.1;在Django中使用Python;shell;400
11.7.2;測試數據模型;402
11.8;Django管理應用;403
11.8.1;設置admin;403
11.8.2;使用admin;404
11.9;創建博客的用戶界面;410
11.9.1;創建模板;411
11.9.2;創建URL模式;412
11.9.3;創建視圖函數;415
11.10;改進輸出;418
11.11;處理用戶輸入;422
11.11.1;模板:添加HTML表單;423
11.11.2;添加URLconf項;423
11.11.3;視圖:處理用戶輸入;423
11.11.4;跨站點請求偽造;424
11.12;表單和模型表單;426
11.12.1;Django表單簡介;426
11.12.2;模型表單示例;427
11.12.3;使用ModelForm來生成HTML表單;427
11.12.4;處理ModelForm數據;428
11.13;視圖進階;429
11.14;*改善外觀;431
11.15;*單元測試;432
11.15.1;blog應用的代碼審查;434
11.15.2;blog應用總結;439
11.16;*中級Django應用:TweetApprover;439
11.16.1;創建項目文件結構;440
11.16.2;安裝Twython庫;445
11.16.3;URL結構;446
11.16.4;數據模型;449
11.16.5;提交新推文以便審核;453
11.16.6;審核推文;457
11.17;資源;465
11.18;總結;465
11.19;練習;466
第12章;雲計算:Google;App;Engine;470
12.1;簡介;471
12.2;雲計算;471
12.2.1;雲計算服務的層次;472
12.2.2;App;Engine;473
12.3;沙盒和App;Engine;SDK;476
12.4;選擇一個App;Engine框架;479
12.5;Python;2.7支持;485
12.5.1;一般差異;486
12.5.2;代碼中的差異;486
12.6;與Django比較;487
12.6.1;開始“Hello;World”;487
12.6.2;手動創建“Hello;World”(Zip文件用戶);488
12.7;將“Hello;World”改成一個;簡單的博客;489
12.7.1;快速發現改動:30秒內將純文本轉成HTML;489
12.7.2;添加表單;490
12.7.3;添加Datastore服務;492
12.7.4;迭代改進;496
12.7.5;開發/SDK控制台;496
12.8;添加Memcache服務;502
12.9;靜態文件;505
12.10;添加用戶服務;505
12.10.1;Google賬號驗證;506
12.10.2;聯合驗證;507
12.11;遠程API;shell;507
12.12;問與答(Python實現);509
12.12.1;發送電子郵件;509
12.12.2;接收電子郵件;510
12.13;使用XMPP發送即時消息;512
12.14;處理圖片;514
12.15;任務隊列(非定期任務);514
12.15.1;創建任務;515
12.15.2;配置app.yaml;515
12.15.3;其他任務創建選項;516
12.15.4;將發送電子郵件作為任務;517
12.15.5;deferred包;519
12.16;使用Appstats進行分析;520
12.16.1;在app.yaml中添加標準處理程序;521
12.16.2;添加自定義Admin;Console頁面;521
12.16.3;作為內置界面啟用界面;521
12.17;URLfetch服務;522
12.18;問與答(無Python實現);522
12.18.1;Cron服務(計劃任務作業);523
12.18.2;預熱請求;523
12.18.3;DoS保護;524
12.19;廠商鎖定;524
12.20;資源;525
12.21;總結;526
12.22;練習;527
第13章;Web服務;530
13.1;簡介;531
13.2;Yahoo!金融股票報價服務器;531
13.3;Twitter微博;534
13.3.1;社交網絡;534
13.3.2;Twitter和Python;535
13.3.3;稍微長一點的API組合應用示例;537
13.3.4;總結;547
13.3.5;額外在線資源;548
13.4;練習;548

第3部分;補充/實驗章節

第14章;文本處理;553
14.1;逗號分隔值(CSV);554
14.1.1;CSV簡介;554
14.1.2;再論股票投資組合示例;5​​56
14.2;JSON;557
14.3;可擴展標記語言;561
14.3.1;XML簡介;562
14.3.2;Python和XML;562
14.3.3;XML實戰;566
14.3.4;*使用XML-RPC的客戶端-服務器服務;569
14.4;參考文獻;573
14.5;相關模塊;574
14.6;練習;574
第15章;其他內容;577
15.1;Jython;578
15.1.1;Jython簡介;578
15.1.2;Swing;GUI開發示例;579
15.2;Google+;581
15.2.1;Google+平臺簡介;582
15.2.2;Python和Google+API;582
15.2.3;一個簡單的社交媒體分析工具;582
15.3;練習;590
附錄A;部分練習參考答案;593
附錄B;參考表;597
B.1;Python關鍵字;597
B.2;Python標準操作符和函數;598
B.3;數值類型操作符和函數;599
B.4;序列類型操作符和函數;600
B.5;字符串格式化操作符轉換符號;602
B.6;字符串格式化操作符指令;603
B.7;字符串類型內置方法;603
B.8;列表類型內置方法;605
B.9;字典類型內置方法;605
B.10;集合類型操作符和內置函數;606
B.11;文件對象方法和數據屬性;607
B.12;Python異常;608
B.13;類的特殊方法;610
B.14;Python操作符匯總;612
附錄C;Python;3:一種編程語言進化的產物;614
C.1;為何Python在變化;614
C.2;都發生了哪些變化;615
C.2.1;print變成了print();615
C.2.2;字符串:默認為Unicode編碼;616
C.2.3;單類類型;616
C.2.4;更新異常的語法;617
C.2.5;整數的更新;618
C.2.6;迭代器無處不在;619
C.3;遷移工具;619
C.3.1;2to3工具;619
C.3.2;Python;2.6+;620
C.4;結論;620
C.5;參考資料;620
附錄D;利用Python;2.6+向Python;3遷移;622
D.1;Python;3:Python的下一代;622
D.2;整數;623
D.2.1;單整數類型;624
D.2.2;新型二進制和改進的八進製字符;624
D.2.3;經典除法或真除法;625
D.3;內置函數;626
D.3.1;print語句或print()函數;626
D.3.2;reduce()轉移到了functools模塊中;627
D.3.3;其他更新;627
D.4;面向對象編程:兩種不同的類對象;628
D.5;字符串;629
D.6;異常;630
D.6.1;處理異常(使用as);630
D.6.2;拋出異常;630
D.7;其他轉換工具和技巧;631
D.8;編寫兼容版本2.x和3.x的代碼;632
D.8.1;對比print和print();632
D.8.2;將你的方法導入解決方案中;633
D.8.3;整合在一起;634
D.9;結論;635