內容介紹
作為一門面向對象的開源程式語言,python易於理解和擴展,並且使用起來非常方便。《python編程入門經典》涵蓋了python的方方面面,通過學習本書,讀者可以立即使用python編寫程式。作者james payne從python語言最基本的概念入手,重點介紹了python 2.6和3.1這兩個版本的實際套用。通過對一些現有的python程式進行深入分析,讀者能夠快速上手。《python編程入門經典》涵蓋的主題從字元串、列表和字典一直到類、對象和模組。掌握這些內容後,讀者將學會如何迅速而自信地創建健壯、可靠而又可重用的python應用程式。
主要內容
◆介紹用於存儲和運算元據的變數的概念
◆討論用於讀寫數據的檔案和輸入/輸出
◆總結常被忽視的python功能
◆深入研究如何為模組和程式編寫測試
◆介紹如何使用python編寫gui
◆著重介紹xml、html、xsl和相關技術
◆解釋如何擴展python
◆分享數值編程技術
◆介紹jython的內部機理,jython是一個用java編寫的python版本
作者介紹
James Payne居住在佛羅里達州馬蓋特市,他是Developer Shed公司的主編,從7歲起就開始寫作和編程。James精通多門語言,已經撰寫了400餘篇文章,囊括了幾乎每一種主流程式語言。James的工作是使用Python為金融業開發專有軟體,在業餘時間他喜歡涉獵Django方面的知識。
作品目錄
第Ⅰ部分 初步了解Python
第1章 編程基礎和字元串 3
1.1 編程與使用計算機的區別 3
1.1.1 編程的一致性 3
1.1.2 編程的可控性 4
1.1.3 程式要應對變化 4
1.1.4 小結 4
1.2 準備工作 4
1.2.1 在非Windows系統上安裝
Python 3.1 5
1.2.2 使用Python Shell 5
1.3 開始使用Python——字元串 6
1.3.1 字元串概述 6
1.3.2 為什麼需要引號 6
1.3.3 為什麼有3種類型的引號 7
1.3.4 使用print()函式 7
1.3.5 理解不同的引號 8
1.4 串聯兩個字元串 10
1.5 用不同的方法串聯字元串 11
1.6 本章小結 12
1.7 習題 13
第2章 數值與運算符 15
2.1 不同類型的數值 15
2.2 程式檔案 17
2.2.1 使用不同的類型 18
2.2.2 基本算術 20
2.2.3 一些驚喜 22
2.3 使用數值 23
2.3.1 求值順序 23
2.3.2 數值格式 24
2.3.3 可能會發生的錯誤 25
2.3.4 幾個不尋常的例子 26
2.4 本章小結 26
2.5 習題 27
第3章 變數 29
3.1 引用數據——使用數據的
名稱 29
3.1.1 使用名稱修改數據 30
3.1.2 複製數據 31
3.1.3 禁用的名稱以及一些規則 31
3.2 使用更多的內置類型 31
3.2.1 元組——不可更改的數據
序列 32
3.2.2 列表——可以更改的數據
序列 35
3.2.3 字典——以名稱索引的分組
數據 36
3.2.4 像列表一樣處理字元串 38
3.2.5 特殊類型 39
3.3 序列的其他共有屬性 40
3.3.1 引用最後一個元素 40
3.3.2 序列的範圍 41
3.3.3 通過附加序列增長列表 41
3.3.4 使用列表臨時存儲數據 42
3.3.5 處理集合 43
3.4 本章小結 44
3.5 習題 44
第Ⅱ部分 Python語言和標準庫
第4章 做出決策 49
4.1 比較兩個值是否相等 49
4.2 比較兩個值是否不相等 51
4.3 比較兩個值的大小 51
4.4 對真值和假值取反 53
4.5 觀察多個比較運算的結果 54
4.6 循環 57
4.6.1 重複執行操作 57
4.6.2 終止循環 59
4.7 處理錯誤 62
4.8 本章小結 64
4.9 習題 65
第5章 函式 67
5.1 將程式放在單獨的檔案中 67
5.2 函式:在一個名稱下聚集
代碼 69
5.2.1 選擇名稱 70
5.2.2 在函式中描述函式 70
5.2.3 不同的位置相同的名稱 72
5.2.4 添加注釋 73
5.2.5 要求函式使用提供的值 73
5.2.6 檢查參數 75
5.2.7 為參數設定默認值 77
5.2.8 在函式中調用其他函式 78
5.2.9 函式嵌套函式 80
5.2.10 用自己的詞語標記錯誤 81
5.3 函式的層次 81
5.4 本章小結 82
5.5 習題 83
第6章 類與對象 85
6.1 考慮編程 85
6.1.1 對象的含義 85
6.1.2 已經了解的對象 85
6.1.3 展望:如何使用對象 87
6.2 定義類 87
6.2.1 如何創建對象 87
6.2.2 對象和它們的作用域 95
6.3 本章小結 98
6.4 習題 99
第7章 組織程式 101
7.1 模組 102
7.1.1 導入可用模組 102
7.1.2 通過已有模組創建新模組 102
7.1.3 從命令行開始使用模組 104
7.1.4 改變導入方式 106
7.2 包 106
7.3 模組和包 108
7.3.1 將所有內容引入當前
作用域 108
7.3.2 重新導入模組和包 109
7.4 測試模組和包的基礎知識 111
7.5 本章小結 112
7.6 習題 112
第8章 檔案和目錄 115
8.1 檔案對象 115
8.1.1 編寫文本檔案 116
8.1.2 向檔案中追加文本 116
8.1.3 讀文本檔案 117
8.1.4 檔案異常 119
8.2 路徑和目錄 119
8.3 os中的異常 119
8.3.1 路徑 120
8.3.2 目錄內容 122
8.3.3 獲取檔案信息 123
8.3.4 重命名、移動、複製和刪除
檔案 125
8.3.5 示例:輪換檔案 126
8.3.6 創建和刪除目錄 127
8.3.7 通配 128
8.4 本章小結 129
8.5 習題 129
第9章 Python語言的其他特性 131
9.1 lambda和filter:簡單匿名
函式 131
9.2 Map:短路循環 132
9.3 在列表中做出決策——
列表解析 133
9.4 為循環生成疊代器 133
9.5 使用字典的特殊字元串
替換 135
9.6 重要模組 137
9.6.1 getopt——從命令行中得到
選項 137
9.6.2 使用一個以上的進程 139
9.6.3 執行緒——在相同的進程中
完成多個工作 141
9.7 本章小結 143
9.8 習題 144
第10章 創建模組 145
10.1 研究模組 145
10.1.1 導入模組 147
10.1.2 查找模組 147
10.1.3 理解模組 148
10.2 創建模組和包 149
10.3 使用類 150
10.3.1 定義面向對象編程 151
10.3.2 創建類 151
10.3.3 擴展已有的類 152
10.4 完成模組 153
10.4.1 定義模組特定的錯誤 154
10.4.2 選擇導出哪些內容 154
10.4.3 為模組建立文檔 155
10.4.4 測試模組 164
10.4.5 將模組作為程式運行 165
10.5 創建一個完整的模組 166
10.6 安裝模組 171
10.7 本章小結 174
10.8 習題 175
第11章 文本處理 177
11.1 文本處理的用途 177
11.1.1 搜尋檔案 178
11.1.2 日誌剪輯 179
11.1.3 郵件篩選 179
11.2 使用os模組導航檔案
系統 179
11.3 使用正則表達式和re
模組 185
11.4 本章小結 189
11.5 習題 189
第Ⅲ部分 開始使用Python
第12章 測試 193
12.1 斷言 193
12.2 測試用例和測試套件 195
12.3 測試裝置 198
12.4 用極限編程整合 201
12.4.1 用Python實現搜尋實用
程式 202
12.4.2 一個更加強大的Python
搜尋 207
12.5 軟體生命周期中的正規
測試 210
12.6 本章小結 210
第13章 使用Python編寫GUI 213
13.1 Python的GUI編程工具箱 213
13.2 Tkinter簡介 215
13.3 用Tkinter創建GUI
小組件 215
13.3.1 改變小組件的尺寸 215
13.3.2 配置小組件選項 216
13.3.3 使用小組件 217
13.3.4 創建布局 217
13.3.5 填充順序 218
13.3.6 控制小組件的外觀 219
13.3.7 單選按鈕和複選框 220
13.3.8 對話框 221
13.3.9 其他小組件類型 222
13.4 本章小結 222
13.5 習題 223
第14章 訪問資料庫 225
14.1 使用dbm持久字典 226
14.1.1 選擇dbm模組 226
14.1.2 創建持久字典 227
14.1.3 訪問持久字典 228
14.1.4 dbm與關係資料庫的適用
場合 230
14.2 使用關係資料庫 231
14.2.1 編寫SQL語句 232
14.2.2 定義表 234
14.2.3 建立資料庫 235
14.3 使用Python的資料庫API 237
14.3.1 下載各個模組 237
14.3.2 創建連線 238
14.3.3 使用游標 238
14.3.4 使用事務並提交結果 245
14.3.5 檢查模組的功能和元
數據 246
14.3.6 處理錯誤 246
14.4 本章小結 247
14.5 習題 248
第15章 使用Python處理XML 249
15.1 XML的含義 249
15.1.1 層次標記語言 249
15.1.2 一組標準 251
15.2 模式/DTD 251
15.2.1 文檔模型的用途 251
15.2.2 是否需要文檔模型 252
15.3 文檔類型定義 252
15.3.1 DTD示例 252
15.3.2 DTD不完全是XML 253
15.3.3 DTD的局限性 253
15.4 模式 254
15.4.1 示例模式 254
15.4.2 模式是純粹的XML 254
15.4.3 模式具有層次 255
15.4.4 模式的其他優點 255
15.5 XPath 255
15.6 HTML是XML的子集 256
15.6.1 HTML DTD 256
15.6.2 HTMLParser 256
15.7 Python中可用的XML庫 257
15.8 SAX的含義 257
15.8.1 基於流 258
15.8.2 事件驅動 258
15.8.3 DOM的含義 258
15.8.4 記憶體中訪問 258
15.9 使用SAX或者DOM的
理由 259
15.9.1 能力權衡 259
15.9.2 記憶體考慮 259
15.9.3 速度考慮 259
15.10 Python中可用的SAX
和DOM解析器 259
15.10.1 xml.sax 259
15.10.2 xml.dom.minidom 260
15.11 XSLT簡介 262
15.11.1 XSLT是XML 262
15.11.2 轉換和格式語言 263
15.11.3 函式式、模板驅動 263
15.12 lxml簡介 263
15.13 元素類 263
15.14 使用lxml解析 266
15.15 本章小結 267
15.16 習題 267
第16章 網路編程 269
16.1 理解協定 271
16.1.1 比較協定和程式語言 271
16.1.2 Internet協定棧 272
16.1.3 Internet協定簡介 273
16.2 傳送電子郵件 274
16.2.1 E-mail檔案格式 275
16.2.2 MIME訊息 276
16.2.3 使用SMTP和smtplib傳送
郵件 284
16.3 檢索Internet郵件 286
16.3.1 使用mailbox解析本地
郵筒 286
16.3.2 使用poplib從POP3
伺服器獲取郵件 288
16.3.3 使用imaplib從IMAP
伺服器獲取郵件 290
16.3.4 安全的POP3和IMAP 294
16.3.5 Webmail應用程式不是
E-mail應用程式 294
16.4 套接字編程 294
16.4.1 套接字簡介 295
16.4.2 綁定到外部主機名 297
16.4.3 鏡像伺服器 298
16.4.4 鏡像客戶端 299
16.4.5 套接字伺服器 300
16.4.6 多執行緒伺服器 302
16.4.7 Python聊天伺服器 303
16.4.8 設計Python聊天
伺服器 303
16.4.9 Python聊天伺服器協定 304
16.4.10 Python聊天客戶端 309
16.4.11 基於select的單執行緒
多任務 312
16.5 其他主題 313
16.5.1 協定設計的多種考慮 313
16.5.2 對等架構 314
16.6 本章小結 314
16.7 習題 315
第17章 用C擴展編程 317
17.1 擴展模組概述 318
17.2 構建並安裝擴展模組 320
17.3 從Python向C傳遞參數 322
17.4 從C向Python返回值 325
17.5 LAME項目 326
17.6 LAME擴展模組 330
17.7 在C代碼中使用Python
對象 342
17.8 本章小結 345
17.9 習題 346
第18章 數值編程 347
18.1 Python語言中的數值 347
18.1.1 整數 348
18.1.2 長整數 348
18.1.3 浮點數 349
18.1.4 格式化數值 350
18.1.5 作為數值的字元 352
18.2 數學 353
18.2.1 算術運算 354
18.2.2 內置數學函式 355
18.3 複數 357
18.4 數組 359
18.5 本章小結 363
18.6 習題 363
第19章 Django簡介 365
19.1 框架的定義以及使用框架的
理由 365
19.2 Web框架的其他功能 366
19.3 Django發展史 367
19.4 理解Django的架構 368
19.4.1 項目初始設定 368
19.4.2 創建視圖 371
19.5 使用模板 373
19.6 使用模板和視圖 375
19.6.1 模型 378
19.6.2 創建模型的第一步——
配置資料庫設定 379
19.7 創建模型:創建一個套用
程式 380
19.8 本章小結 382
19.9 習題 383
第20章 Web應用程式與Web
服務 385
20.1 REST:Web架構 386
20.1.1 REST的特性 386
20.1.2 REST操作 388
20.2 HTTP:REST的實際套用 388
20.2.1 可見的Web伺服器 390
20.2.2 HTTP請求 393
20.2.3 HTTP回響 393
20.3 CGI:將腳本變為Web套用
程式 395
20.3.1 Web伺服器與CGI腳本的
協定 397
20.3.2 CGI的特殊環境變數 397
20.3.3 通過HTML表單接收用戶
輸入 399
20.4 HTML表單的有限辭彙 400
20.5 訪問表單值的安全性 401
20.6 構建wiki 405
20.6.1 BittyWiki核心庫 406
20.6.2 BittyWiki的Web接口 409
20.7 Web服務 418
20.8 REST Web 服務 419
20.8.1 REST快速入門:
在Amazon.com上尋找
廉價商品 419
20.8.2 WishListBargainFinder
簡介 422
20.8.3 向BittyWiki提供
REST API 425
20.8.4 使用REST Web服務
實現搜尋和替換功能 428
20.9 XML-RPC 432
20.9.1 XML-RPC請求 434
20.9.2 XML-RPC中的數據
表示 434
20.9.3 XML-RPC回響 435
20.9.4 錯誤處理機制 436
20.9.5 通過XML-RPC展示
BittyWiki API 437
20.9.6 基於XML-RPC Web服務
的wiki搜尋和替換 440
20.10 SOAP 442
20.10.1 SOAP快速入門 442
20.10.2 SOAP請求 443
20.10.3 SOAP回響 444
20.10.4 錯誤處理機制 444
20.10.5 展示一個BittyWiki的
SOAP接口 445
20.10.6 基於SOAP Web服務的
wiki搜尋和替換 447
20.11 為Web服務API創建
文檔 449
20.11.1 人類可讀的API
文檔 449
20.11.2 XML-RPC自省API 450
20.11.3 WSDL 451
20.12 選擇Web服務標準 455
20.13 Web服務禮儀 456
20.13.1 Web服務的使用者
禮儀 456
20.13.2 Web服務的創建者
禮儀 456
20.13.3 將Web應用程式作為
Web服務使用 456
20.14 本章小結 456
20.15 習題 457
第21章 集成Java與Python 459
21.1 在Java應用程式中編寫
腳本 460
21.2 比較各種Python實現 461
21.3 安裝Jython 461
21.4 運行Jython 461
21.4.1 互動地運行Jython 461
21.4.2 運行Jython腳本 463
21.4.3 控制jython腳本 463
21.4.4 創建可執行命令 464
21.5 獨立運行Jython 465
21.6 打包基於Jython的套用
程式 466
21.7 集成Java和Jython 466
21.7.1 在Jython中使用
Java類 466
21.7.2 從Jython訪問資料庫 471
21.7.3 通過Jython編寫
Java EE servlet 477
21.7.4 選擇Jython開發工具 483
21.8 使用Jython進行測試 483
21.9 嵌入Jython解釋器 484
21.10 處理C-Python和Jython
之間的差異 487
21.11 本章小結 488
21.12 習題 488
第Ⅳ部分 附 錄
附錄A 習題答案 491
附錄B 線上資源 519
附錄C Python 3.1的新特性 521
附錄D 術語表 527