# 附錄?E.?修訂歷史
## 2007-09-01 (5.4b)
* XiaQ (xiaqqaix AT gmail DOT com) 進行了 Dive Into Python 中文版的修訂工作,重發布為 5.4b 版。可以在 Dive Into Python 中文版的[項目主頁](http://wiki.woodpecker.org.cn/moin/DiveIntoPythonZh)上找到一份完整的 (同時也是及其冗長的) 修訂清單。注意原英文版不含 5.4b 版。
## 2006-04-25 (5.4 中文版)
參加了 Dive Into Python 中文版 5.4 版翻譯的有:
* limodou (limodou AT gmail DOT com)
* Zoom.Quiet (zoom.quiet AT gmail DOT com)
* Jason Xie (jason AT sinoesl DOT org)
* YuLin (yulin724 AT gmail DOT com)
* Weigang LI (dimens AT gmail DOT com)
* wolfg (wolfg1969 AT gmail DOT com)
* Osmond (sinosmond AT gmail DOT com)
## 2004-05-20 (5.4)
* 添加了 第?12.1?節 “概覽”。
* 添加了 第?12.2?節 “安裝 SOAP 庫”。
* 添加了 第?12.3?節 “步入 SOAP”。
* 添加了 第?12.4?節 “ SOAP 網絡服務查錯”。
* 添加了 第?12.5?節 “WSDL 介紹”。
* 添加了 第?12.6?節 “以 WSDL 進行 SOAP 內省”。
* 添加了 第?12.7?節 “搜索 Google”。
* 添加了 第?12.8?節 “ SOAP 網絡服務故障排除”。
* 添加了 第?12.9?節 “小結”。
* 修改了 第?16?章 _函數編程_ 和 第?18?章 _性能優化_ 中的大量技術評論。
## 2004-05-12 (5.3)
* 為 第?18.3?節 “優化正則表達式” 添加了 `isalpha()` 的示例。感謝你,Paul。
* 對 第?5?章 _對象和面向對象_ 和 第?6?章 _異常和文件處理_ 進行了大量修改。
* 修正了 第?9.7?節 “Segue ” 中的 URL 地址。
## 2004-05-09 (5.2)
* 修正了 第?14.1?節 “roman.py, 第 1 階段” 中的一個 URL 地址。
* 添加了 第?18.1?節 “概覽”。
* 添加了 第?18.2?節 “使用 timeit 模塊”。
* 添加了 第?18.3?節 “優化正則表達式”。
* 添加了 第?18.4?節 “優化字典查找”。
* 添加了 第?18.5?節 “優化列表操作”。
* 添加了 第?18.6?節 “優化字符串操作”。
* 添加了 第?18.7?節 “小結”。
## 2004-05-05 (5.1)
* 修訂了 例?7.7 “校驗十位數” 和 例?7.8 “用 {n,m} 語法確認羅馬數字”。
* 修訂了 例?7.10 “發現數字” 。
* 修正了 例?11.6 “測試 Last-Modified” 中的拼寫錯誤。感謝你,Jesir。
* 修正了 例?3.11 “extend (擴展) 與 append (追加) 的差別” 與 append (追加) 的差別") 中的拼寫錯誤。感謝你,Daniel。
* 修改了大量技術評論。
* 對 第?1?章 _安裝 Python_、第?2?章 _第一個 Python 程序_、第?3?章 _內置數據類型_ 和 第?4?章 _自省的威力_ 進行了大量修改。
## 2004-04-16 (5.0)
* 添加了 第?11.1?節 “概覽”.
* 添加了 第?11.2?節 “避免通過 HTTP 重復地獲取數據”.
* 添加了 第?11.3?節 “HTTP 的特性”.
* 添加了 第?11.4?節 “調試 HTTP web 服務”.
* 添加了 第?11.5?節 “設置 User-Agent”.
* 添加了 第?11.6?節 “處理 Last-Modified 和 ETag”.
* 添加了 第?11.7?節 “處理重定向”.
* 添加了 第?11.8?節 “處理壓縮數據”.
* 添加了 第?11.9?節 “全部放在一起”.
* 添加了 第?11.10?節 “小結”.
* 添加了 例?3.11 “extend (擴展) 與 append (追加) 的差別” 與 append (追加) 的差別").
* 在 第?1?章 _安裝 Python_ 中修改了關于如何下載 Python 的描述,使其更一般化,且減少了版本依賴性。
* 在 第?2.1?節 “概覽” 和 第?2.4?節 “萬物皆對象” 中,把術語 “module” (模塊) 改為了 “program” (程序),因為我們此時尚未介紹模塊。
* 在 第?2.4?節 “萬物皆對象” 中,添加了打開 Python IDE 的詳細說明,和原來的例子合并在一起。
* 把所有引用到布爾值 `1` (真) 和 `0` (假) 分別改為了 `True` 和 `False`。
* 更新了 例?3.22 “字符串格式化與字符串連接的比較” ,以展示 Python 2.3 所顯示的`TypeError` 消息。
* 修正了 例?17.19 “使用生成器替代遞歸” 中的拼寫錯誤。
* 修正了 第?7.7?節 “小結” 中的拼寫錯誤。
* 修正了 例?17.9 “plural4.py” 中的拼寫錯誤。
## 2004-03-25 (4.9)
* 完成了 第?16.7?節 “全部放在一起”。
* 添加了 第?16.8?節 “小結”。
* 把對單元測試的介紹分成了兩章: 第?13?章 _單元測試_ 和 第?14?章 _測試優先編程_。
* 修正了 例?17.12 “plural4.py 的完成” 中的拼寫錯誤。
* 修正了 例?17.18 “介紹生成器” 中的拼寫錯誤。
## 2004-03-25 (4.8)
* 完成了 第?17.7?節 “plural.py, 第 6 階段”。
* 完成了 第?17.8?節 “小結”。
* 修復了 附錄?A, _進一步閱讀_、附錄?B, _五分鐘回顧_、附錄?C, _技巧和竅門_和附錄?D, _示例清單_中的失效鏈接。
## 2004-03-21 (4.7)
* 添加了 第?17.1?節 “概覽”。
* 添加了 第?17.2?節 “plural.py, 第 1 階段”。
* 添加了 第?17.3?節 “plural.py, 第 2 階段”。
* 添加了 第?17.4?節 “plural.py, 第 3 階段”。
* 添加了 第?17.5?節 “plural.py, 第 4 階段”。
* 添加了 第?17.6?節 “plural.py, 第 5 階段”。
* 添加了 第?17.7?節 “plural.py, 第 6 階段” (未完成)。
* 添加了 第?17.8?節 “小結” (未完成)。
## 2004-03-14 (4.6)
* 完成了 第?7.4?節 “使用 {n,m} 語法”。
* 完成了 第?7.5?節 “松散正則表達式”。
* 完成了 第?7.6?節 “個案研究:解析電話號碼”。
* 擴寫了 第?7.7?節 “小結”。
## 2004-03-07 (4.5)
* 添加了 第?7.1?節 “概覽”。
* 添加了 第?7.4?節 “使用 {n,m} 語法” (未完成)。
* 添加了 第?7.5?節 “松散正則表達式” (未完成)。
* 添加了 第?7.6?節 “個案研究:解析電話號碼” (未完成)。
* 添加了 第?7.7?節 “小結”。
* 把 第?7.2?節 “個案研究:街道地址” 和 第?7.3?節 “個案研究:羅馬字母” 移入了正則表達式這一章。
* 添加了 例?6.20 “使用 glob 列出目錄”。
* 添加了 例?6.7 “寫入文件”。
* 添加了 例?5.11 “直接繼承自內建數據類型 dict”。
* 添加了 例?10.11 “打印到 stderr”。
* 添加了 例?4.12 “使用getattr 創建分發者” 和 例?4.13 “getattr 缺省值”。
* 添加了 例?2.6 “if 語句”。
* 添加了 例?3.23 “數值的格式化”。
* 把 第?5?章 _對象和面向對象_ 分成了兩章:第?5?章 _對象和面向對象_ 和 第?6?章 _異常和文件處理_。
* 把 第?9?章 _XML 處理_ 分成了兩章:第?9?章 _XML 處理_ 和 第?10?章 _腳本和流_。
* 把 第?13?章 _單元測試_ 分成了兩章:第?13?章 _單元測試_ 和 第?15?章 _重構_。
* 把 第?4?章 _自省的威力_ 中的 `help` 改名為 `info`。
* 修正了 第?8.5?節 “locals 和 globals” 中的回向引用。
* 修復了 第?8.1?節 “概覽” 中失效的示例鏈接。
* 修復了 第?9.1?節 “概覽” 示例中丟失的若干行。
* 修正了 第?8.2?節 “sgmllib.py 介紹” 中的拼寫錯誤。
## 2003-10-08 (4.4)
* 添加了 第?1.1?節 “哪一種 Python 適合您?”。
* 添加了 第?1.2?節 “Windows 上的 Python”。
* 添加了 第?1.3?節 “Mac OS X 上的 Python ”。
* 添加了 第?1.4?節 “Mac OS 9 上的 Python ”。
* 添加了 第?1.5?節 “RedHat Linux 上的 Python ”。
* 添加了 第?1.6?節 “Debian GNU/Linux 上的 Python ”。
* 添加了 第?1.7?節 “從源代碼安裝 Python ”。
* 添加了 第?1.9?節 “小結”。
* 刪除了序言。
* 修正了 例?3.27 “odbchelper.py 的輸出結果” 中的拼寫錯誤。
* 為 第?2.3?節 “文檔化函數” 添加了指向 PEP 257的鏈接。
* 修正了 第?3.4.2?節 “一次賦多值” 中指向 [_How to Think Like a Computer Scientist_](http://www.ibiblio.org/obp/thinkCSpy/ "Python book for computer science majors") 的鏈接。
* 添加了 第?3.3?節 “Tuple 介紹” 中關于隱式斷言 (assert) 的評注。
## 2003-09-28 (4.3)
* 添加了 第?16.6?節 “動態導入模塊”。
* 添加了 第?16.7?節 “全部放在一起” (未完成)。
* 修正了 附錄?F, _關于本書_ 中的鏈接。
## 2003-09-17 (4.2.1)
* 修正了主頁中的鏈接。
* 修復了語法高亮。
## 2003-09-12 (4.2)
* 修正了 第?16.4?節 “重識列表映射”、第?16.3?節 “重識列表過濾”、第?7.2?節 “個案研究:街道地址” 和 第?10.6?節 “處理命令行參數” 中的拼寫錯誤。感謝你,Doug。
* 修正了 第?5.3?節 “類的定義” 中的外部鏈接。感謝你,Harry。
* 修改了 第?4.5?節 “過濾列表” 結尾的措辭。感謝你,Paul。
* 為 第?13.5?節 “負面測試 (Testing for failure)”") 添加了幾句話,以強調我們正在給 `assertRaises` 傳遞一個函數,而非函數名稱。感謝你,Stephen。
* 修正了 第?8.8?節 “dialect.py 介紹” 中的拼寫錯誤。感謝你,Wellie。
* 修正了關于方言示例的若干鏈接。
* 修正了關于羅馬數字歷史的外部鏈接。感謝世界各地的羅馬數字愛好者。
## 2002-07-28 (4.1)
* 添加了 第?10.3?節 “查詢緩沖節點”。
* 添加了 第?10.4?節 “查找節點的直接子節點”。
* 添加了 第?10.5?節 “根據節點類型創建不同的處理器”。
* 添加了 第?10.6?節 “處理命令行參數”。
* 添加了 第?10.7?節 “全部放在一起”。
* 添加了 第?10.8?節 “小結”。
* 修正了 第?6.5?節 “與目錄共事” 中的拼寫錯誤。應該是 `os.getcwd()`,而不是 `os.path.getcwd()`。感謝你,Abhishek。
* 修正了 第?3.7?節 “連接 list 與分割字符串” 中的排印錯誤。當在 Python IDE 中求值 (而非打印) 的時候,它會在輸出的兩側加上單引號。
* 修改了 第?4.8?節 “全部放在一起” 中的 `str` 示例,以使用一個用戶定義的函數,因為 Python 2.2 會為內置的字典模塊定義一個 `doc string`,從而導致原來那個示例的失效。感謝 Eric。
* 修正了 第?9.4?節 “Unicode” 中的拼寫錯誤,“anyway”改為“anywhere”。感謝 Frank。
* 修正了 第?13.6?節 “完備性檢測 (Testing for sanity)”") 中的拼寫錯誤,我原把“accept”重復了一次。感謝 Ralph.
* 修正了 第?15.3?節 “重構” 中的排印錯誤,`C?C?C?` 匹配零至三個 `C`,而不是四個。感謝 Ralph。
* 重寫了 例?3.9 “Slice 簡寫” 中對分片的解說,使之更加清晰。感謝 Petr。
* 添加了 第?5.5?節 “探索 UserDict:一個封裝類” 中的歷史評注。現在 Python 2.2 支持直接子類化內置數據類型了。
* 為 例?5.9 “定義 UserDict 類” 添加了對字典的方法 `update` 的解說。感謝 Petr。
* 在 第?5.5?節 “探索 UserDict:一個封裝類” 中闡明了 Python 對重載的不支持。感謝 Petr。
* 修正了 例?8.8 “BaseHTMLProcessor 介紹” 中的排印錯誤。HTML 注釋以兩個 (而非一個) 橫杠和一個括號結束。感謝 Petr。
* 修改了 第?8.5?節 “locals 和 globals” 中關于嵌套作用域的注記。Python 2.2 已經發布了。感謝 Petr。
* 修正了 例?8.14 “BaseHTMLProcessor.py 中的基于 dictionary 的字符串格式化”; 中的排印錯誤:本應該是一連串空格,我誤打為一個了。感謝 Petr。
* 添加了 第?5.5?節 “探索 UserDict:一個封裝類” 的標題以標志基類。感謝 Petr。
* 添加了 第?15.3?節 “重構” 中的標題以提示下載 `unittest`。感謝 Petr。
* 修正了 例?16.6 “在當前目錄運行腳本” 中的排版錯誤;空格被誤打為了制表符;行號也沒有對準。感謝 Petr。
* 修正了 第?3.2?節 “List 介紹” 中首字母未大寫的錯誤。應該是 `True` 和 `False`,而非 `true` 和 `false`。感謝所有指出這一點的讀者。
* 修改了 第?3.1?節 “Dictionary 介紹”、第?3.2?節 “List 介紹” 和 第?3.3?節 “Tuple 介紹” 的小節標題。“Dictionaries 101”表明這是 Dictionary 的入門教程。美國的大學往往用“101”標示無需知識背景的入門課程,但顯然這僅僅是個美國傳統,所以沒必要讓我的國際讀者們費勁猜測。――當我一年半前開始寫這本書時,從未想到會擁有國際讀者。
* 把樣式表升級到 DocBook XSL 1.52 版。
* 升級到 由 Michael Kay 編制的 SAXON XSLT 解析器 6.52 版。
* 調整了樣式表的相關部分。
* 上次修訂后,她答應了。婚禮明年春天舉行。
## 2002-04-26 (4.0-2)
* 修正了 例?4.15 “and 介紹” 中的拼寫錯誤。
* 修正了 例?2.4 “模塊導入的搜索路徑” 中的拼寫錯誤。
* 修復了 Windows 幫助文件 (樣式表的改動引起了目錄的丟失)。
## 2002-04-19 (4.0)
* 擴寫了 第?2.4?節 “萬物皆對象”,詳細介紹了導入搜索路徑。
* 修正了 例?3.7 “負的 list 索引” 中的拼寫錯誤。感謝 Brian 的校正。
* 重寫了 第?3.2?節 “List 介紹” 中關于真值的提示。現在 Python 有單獨的布爾類型了。
* 修正了 第?5.2?節 “使用 from module import 導入模塊” 中與 Java 的語法比較部分的拼寫錯誤。感謝 Rick 的校正。
* 添加了 第?5.5?節 “探索 UserDict:一個封裝類” 中的注解,說明了子類總是重寫基類。
* 修正了 例?5.18 “修改類屬性” 中的拼寫錯誤。感謝 Kevin 的校正。
* 添加了 第?6.1?節 “異常處理” 中的注解,說明了可以自己定義異常并觸發它。感謝 Rony 的建議。
* 修正了 例?8.17 “處理特別標記” 中的拼寫錯誤。感謝 Rick 的校正。
* 添加了 例?8.18 “SGMLParser” 中的注解,詳細說明了返回值。感謝 Howard 的建議。
* 在 例?10.6 “openAnything” 中,添加了 `StringIO` 初始化式中的 `str` 函數。感謝 Ganesan 的主意。
* 添加了 第?13.3?節 “romantest.py 介紹” 中的鏈接,解釋了為什么測試用例要放在另一個文件中。
* 修改了 第?16.2?節 “找到路徑”,用 `os.path.dirname` 代替了 `os.path.split`。感謝 Marc 的主意。
* 添加了代碼示例 (`piglatin.py`、`parsephone.py` 和 `plural.py`),為正則表達式一章作準備。
* 更新并擴充了主頁上關于 Python 的鏈接。
## 2002-01-01 (3.9)
* 添加了 第?9.4?節 “Unicode”。
* 添加了 第?9.5?節 “搜索元素”。
* 添加了 第?9.6?節 “訪問元素屬性”。
* 添加了 第?10.1?節 “抽象輸入源”。
* 添加了 第?10.2?節 “標準輸入、輸出和錯誤”。
* 在 第?6.3?節 “for 循環” 中,為 `for` 循環示例添加了簡單計數的例子 (好的用法和不好的用法)。感謝 Kevin 的主意。
* 修正了 例?3.25 “keys, values 和 items 函數” 中的排印錯誤 (`params.values()` 的兩個元素被顛倒了)。
* 修正了 第?4.3?節 “使用 type、str、dir 和其它內置函數” 中關于 `__builtin__` 模塊的錯誤。感謝 Denis 的校正。
* 為 第?16.2?節 “找到路徑” 添加了更多的示例,展示了如何在當前目錄下運行單元測試,而不必進入 `regression.py` 所在的目錄。
* 在 例?3.7 “負的 list 索引” 中,修改了如何由正索引得到負索引的解釋。感謝 Renauld 的建議。
* 更新了主頁上 Python 的下載鏈接。
* 為主頁添加了指向 Bruce Eckel 的 [_Thinking in Python_](http://www.mindview.net/Books/TIPython "advanced book on design patterns in Python") 初稿的鏈接。這是一本不可思議的 (也是高階的) 書,講述了設計模式以及如何用 Python 實現它們。
## 2001-11-18 (3.8)
* 添加了 第?16.2?節 “找到路徑”。
* 添加了 第?16.3?節 “重識列表過濾”。
* 添加了 第?16.4?節 “重識列表映射”。
* 添加了 第?16.5?節 “數據中心思想編程”。
* 擴充了 第?16.1?節 “概覽” 中的樣例輸出。
* 完成了 第?9.3?節 “XML 解析”。
## 2001-09-30 (3.7)
* 添加了 第?9.2?節 “包”。
* 添加了 第?9.3?節 “XML 解析”。
* 把 第?9.1?節 “概覽” “打掃干凈”了。感謝 Matt 的建議。
* 在 第?5.2?節 “使用 from module import 導入模塊” 中,添加了關于 Java 的提示。感謝 Ori 的建議。
* 修正了 第?4.8?節 “全部放在一起” 中的錯誤。我曾暗示過,在 Python 中你不能使用 `is None` 來判斷變量是否為 null。實際上可以;而且它比 `== None` 快。感謝 Ori 指出錯誤。
* 澄清了 第?3.2?節 “List 介紹”:我曾說 `li = li + other` 與 `li.extend(other)` 等價。操作結果的確相同;但 `extend` 更快,因為它不會創建新 list。感謝 Denis 指出。
* 修正了 第?3.2?節 “List 介紹” 中的錯誤:我曾說 `li += other` 與 `li = li + other` 等價。實際上,它與 `li.extend(other)` 等價,因為它不會創建新 list。感謝 Denis 指出。
* 修正了 第?2?章 _第一個 Python 程序_ 因我的懶惰而引起的排版錯誤。當我寫這一章時,我沒有在字符串字面量的兩側加單引號。它們會被賦予特殊字體,但在這本書的一些編譯版本 (如純文本) 中這不奏效。感謝 Denis 的建議。
* 修正了 第?2.2?節 “函數聲明” 中的錯誤。我曾說靜態類型語言總是顯示地要求給出變量的數據類型;事實上并非總是如此。有些靜態類型語言會在編譯時根據代碼確定變量類型。感謝 Tony 指出。
* 添加了指向 [西班牙文版](http://es.diveintopython.org/) 的鏈接。
## 2001-09-06 (3.6.4)
* 為 `BaseHTMLProcessor` 添加處理非 HTML 實體引用的代碼,并在 第?8.4?節 “BaseHTMLProcessor.py 介紹” 中添加了關于它的注解。
* 修改了 例?8.11 “globals 介紹”,使之在輸出中包括 `htmlentitydefs`。
## 2001-09-04 (3.6.3)
* 修正了 第?9.1?節 “概覽” 中的拼寫錯誤。
* 添加了指向 [韓文版](http://kr.diveintopython.org/html/index.htm) 的鏈接。
## 2001-08-31 (3.6.2)
* 修正了 第?13.6?節 “完備性檢測 (Testing for sanity)”") 中的排印錯誤 (最后一點要求列了兩次)。
## 2001-08-31 (3.6)
* 完成了 第?8?章 _HTML 處理_;在其末尾添加了 第?8.9?節 “全部放在一起” 和 第?8.10?節 “小結”。
* 添加了 第?15.4?節 “后記”。
* 在 第?9?章 _XML 處理_ 開頭添加了 第?9.1?節 “概覽”。
* 在 第?16?章 _函數編程_ 開頭添加了 第?16.1?節 “概覽”。
* 修正了一個長期存在的 bug:第?8?章 _HTML 處理_ 中的示例被錯誤地著色了。
* 添加了指向 [法文版](http://fr.diveintopython.org/toc.html) 的鏈接。他們做對了:他們翻譯了 XML 源文件,這樣我的構建腳本得以重用,他們的成果就可以用六種格式發布。
* 升級到 DocBook XSL 1.43 版的樣式表。
* 升級到 由 Michael Kay 編制的 SAXON XSLT 解析器 6.43 版。
* 對樣式表進行了大規模翻修:放棄了原來的基于表格的排版,轉向層疊樣式表。不幸的是, CSS 總是會出兼容性問題,所以在每個頁面的首尾部分都保留的表格。編譯后的 HTML 版本在 Netscape 4 看起來更糟糕了;但在大多數現代瀏覽器中――包括 Netscape 6、Mozilla、Internet Explorer 5、Opera 5、Konqueror 和 iCab――中表現良好。在 Lynx 中完全可讀。我愛 Lynx!它是我使用的第一個瀏覽器。你永遠不會忘記你的第一次。
* 遷移到 [Ant](http://jakarta.apache.org/ant/) 平臺上,以便控制進程――我現在可是在六種格式和兩種語言中探險。
* 整理了所有的下載檔案;這之前我為每個平臺都發布了不同的文件,因為 Python 的 `zipfile` 模塊創建的 .zip 文件不標準,因此不能被 Mac OS 上的 Aladdin Expander 打開。但 Ant 創建的 .zip 完全標準,兼容性良好。好樣的,Ant!
* 我們把 XML 源、XSL 樣式表和相關的腳本和庫放在了 SourceForge。對于喜歡冒險的人們,當然有 CVS 接入。
* 在與 GPL 調和的 [Python 2.1.1 license](http://www.python.org/2.1.1/license.html) 下重新發布了代碼。感謝你,Guido;人們確實關心,而它確實要緊。
## 2001-06-26 (3.5)
* 在 第?2.2?節 “函數聲明” 中添加了對 強/弱/靜態/動態 數據類型的注解。
* 添加了 第?3.1?節 “Dictionary 介紹” 中關于大小寫敏感的示例。
* 在 第?5?章 _對象和面向對象_ 中使用了 `os.path.normcase`,以兼容對大小寫不敏感的糟糕的操作系統。
* 修正了 PDF 版本中代碼的縮進問題。
## 2001-05-31 (3.4)
* 添加了 第?14.5?節 “roman.py, 第 5 階段”。
* 添加了 第?15.1?節 “處理 bugs”。
* 添加了 第?15.2?節 “應對需求變化”。
* 添加了 第?15.3?節 “重構”。
* 添加了 第?15.5?節 “小結”。
* 又修正一個樣式表 bug :嵌套的 `</span>` 標記總是丟失。
## 2001-05-24 (3.3)
* 添加了 第?13.2?節 “深入”。
* 添加了 第?13.3?節 “romantest.py 介紹”。
* 添加了 第?13.4?節 “正面測試 (Testing for success)”")。
* 添加了 第?13.5?節 “負面測試 (Testing for failure)”")。
* 添加了 第?13.6?節 “完備性檢測 (Testing for sanity)”")。
* 添加了 第?14.1?節 “roman.py, 第 1 階段”。
* 添加了 第?14.2?節 “roman.py, 第 2 階段”。
* 添加了 第?14.3?節 “roman.py, 第 3 階段”。
* 添加了 第?14.4?節 “roman.py, 第 4 階段”。
* 在兼容 Netscape/Mozilla 的強烈要求下,調整了樣式表。
## 2001-05-03 (3.2)
* 添加了 第?8.8?節 “dialect.py 介紹”。
* 添加了 第?7.2?節 “個案研究:街道地址”。
* 修正了 `handle_decl` 方法中的 bug:它會產生不正確的聲明 (把空格加在的不該出現的地方)。
* 修正了 CSS (2.9 介紹過) 中的 bug:背景色丟失了。
## 2001-04-18 (3.1)
* 為 `BaseHTMLProcessor.py` 添加處理聲明的代碼;現在 Python 2.1 也支持這段代碼了。
* 添加 第?8.5?節 “locals 和 globals” 中關于嵌套作用域的注解。
* 修正了 例?8.1 “BaseHTMLProcessor.py” 中的一個隱秘的 bug:帶有字符實體的屬性值不會被合適地轉義。
* 對于本書中的示例,現在推薦 (并不要求) Python 2.1,因為它支持 `sgmllib.py` 中的聲明。
* 更新了 [主頁](http://diveintopython.org/) 上的鏈接,使其指向已經發布的 Python 2.1。
* 給文件加上了時間戳,以幫助重發布這本書的人們。
## 2001-04-16 (3.0)
* 對 第?8?章 _HTML 處理_ 中的代碼修正了幾個小錯誤。
* 在 [主頁](http://diveintopython.org/) 上添加了指向中文版的鏈接。
## 2001-04-13 (2.9)
* 添加了 第?8.5?節 “locals 和 globals”。
* 添加了 第?8.6?節 “基于 dictionary 的字符串格式化”。
* 緊縮了 第?8?章 _HTML 處理_ 中的代碼,特別是 `ChefDialectizer`,以使用更少、更簡單的正則表達式。
* 修正了一個樣式表 bug:它使得生成 PDF 版本時插入了不必要的空白頁。
* 修正了一個腳本 bug:它剝除了 [主頁](http://diveintopython.org/) 上的 `DOCTYPE`。
* 添加了指向 Python Cookbook](http://www.activestate.com/ASPN/Python/Cookbook/ "growing archive of annotated code samples") 的鏈接,并為 [附錄?A, _進一步閱讀_ 添加了一些鏈接。
* 改用 [Google](http://www.google.com/services/free.html) 代理 `http://diveintopython.org/` 的站內搜索。
* 升級到 DocBook XSL 樣式表 1.36 版――比它所宣稱的麻煩多了。可能還有潛伏的 bug。
## 2001-03-26 (2.8)
* 添加了 第?8.3?節 “從 HTML 文檔中提取數據”。
* 添加了 第?8.4?節 “BaseHTMLProcessor.py 介紹”。
* 添加了 第?8.7?節 “給屬性值加引號”。
* 緊縮了 第?4?章 _自省的威力_ 中的代碼:使用的內置函數 `callable` 來代替手工檢測。
* 把 第?5.2?節 “使用 from module import 導入模塊” 從 第?4?章 _自省的威力_ 移到了 第?5?章 _對象和面向對象_。
* 修正了 第?5.1?節 “概覽” 中的排印錯誤 (補回了冒號)。
* 添加了幾個額外的供下載的樣例腳本。
* 添加了 Windows Help 輸出格式。
## 2001-03-16 (2.7)
* 添加了 第?8.2?節 “sgmllib.py 介紹”。
* 緊縮了 第?8?章 _HTML 處理_ 中的代碼。
* 修改了 第?2?章 _第一個 Python 程序_ 中的代碼:用了 `items` 方法代替了 `keys`。
* 把 第?3.4.2?節 “一次賦多值” 一節移到了 第?2?章 _第一個 Python 程序_。
* 編輯了關于字符串 `join` 方法的評注,提供了 [_The Whole Python FAQ_](http://www.python.org/doc/FAQ.html) 中解釋[why `join` is a string method](http://www.python.org/cgi-bin/faqw.py?query=4.96&querytype=simple&casefold=yes&req=search) (為什么 `join` 是字符串方法) 而不是 list 方法的這一新條目。
* 重寫了 第?4.6?節 “and 和 or 的特殊性質”,強調了 `and` 和 `or` 的基本性質;并且不再強調 `and-or` 技巧。
* 把語言比較重新組織為了 `note`。
## 2001-02-28 (2.6)
* 給 PDF 和 Word 版本加入了彩色的示例文本、改進后的目錄,以及縮進良好的 `tip` 和 `note`。
* 現在 Word 版本是正宗的 Word 格式了,與 Word 97 完全兼容。
* 部分地解決 PDF 和純文本版本中的特殊字符 (像 TM 符號和花括號) 錯誤的問題。
* 添加了指向支持 UNIX 的 Word 版本的下載鏈接――有些小鬼想把它導入到 StarOffice 或其它什么環境中去。
* 修正了幾個丟失標題的 `注記`。
* 修正了一個 bug:它會導致 Internet Explorer 5 for Mac OS 示例中的彩色文字發生字體錯亂。(你好?!?Microsoft?好,你倒說說看,到底是 `<pre>` 的哪一部分你不懂?)
* 修復了 Mac OS 檔案的下載鏈接。
* 在每章的第一個示例程序前,都添加了下載示例程序的鏈接。(我的日志顯示人們往往會跳過本可以下載它們的那兩個頁面 (即: [主頁](http://diveintopython.org/ "Dive Into Python home page") 和序言),然后在閱讀時驚慌失措地尋找下載地址。)
* 進一步緊縮了 [主頁](http://diveintopython.org/ "Dive Into Python home page") 和序言――但愿人們不會再因為其雜亂不堪而跳過它們。
* 但愿早點結束這沒完沒了的調試,回到寫作正軌。
## 2001-02-23 (2.5)
* 添加了 第?6.4?節 “使用 sys.modules”。
* 添加了 第?6.5?節 “與目錄共事”。
* 把 例?6.17 “分割路徑名” 從 第?3.4.2?節 “一次賦多值” 移到了 第?6.5?節 “與目錄共事”。
* 添加了 第?6.6?節 “全部放在一起”。
* 添加了 第?5.10?節 “小結”。
* 添加了 第?8.1?節 “概覽”。
* 修正了 例?6.10 “遍歷 dictionary” 中的程序清單――少了一個冒號。
## 2001-02-12 (2.4.1)
* 修改了新聞組鏈接,使用了 “news:” 協議。`deja.com` 已死。
* 在下載鏈接旁標明了文件大小。
## 2001-02-12 (2.4)
* 為大多數章節添加了 “進一步閱讀”,并在 附錄?A, _進一步閱讀_ 中匯總。
* 在純文本格式的外部鏈接旁添加了 URL 地址。
## 2001-02-09 (2.3)
* 重寫了 第?5?章 _對象和面向對象_ 中的部分代碼,使用了類的屬性,并給出了一個更好的多值賦值的例子。
* 重新組織了 第?5?章 _對象和面向對象_,把類的部分提前了。
* 添加了 第?5.8?節 “類屬性介紹”。
* 添加了 第?6.1?節 “異常處理”。
* 添加了 第?6.2?節 “與文件對象共事”。
* 把 第?5?章 _對象和面向對象_ 中的 “回顧” 部分合并到了 第?5.1?節 “概覽” 中。
* 給所有的程序清單和示例選擇了配色方案。
* 修正了 第?2.2?節 “函數聲明” 中的重大錯誤:函數會隱式地返回一個 `None`,所以你 _可以_ 在不觸發異常的前提下把它的返回值賦給一個變量。
* 擴寫了 第?2.3?節 “文檔化函數”、第?2.4?節 “萬物皆對象” 和 第?3.4?節 “變量聲明”,使之更加清晰。
## 2001-02-02 (2.2)
* 編輯了 第?4.4?節 “通過 getattr 獲取對象引用”。
* 為 `xref` 標記添加了標題,所以它們也能顯示可愛的提示框了。
* 修改了修訂歷史頁面的主題風格。
* 修正了我昨天在我的 HTML 中提到的 bug:后期處理腳本將會導致無效的 HTML 字符引用,甚至讓一些瀏覽器無法顯示。
* 升級到 DocBook XSL 樣式表 1.29 版。
## 2001-02-01 (2.1)
* 重寫了 第?4?章 _自省的威力_ 中的示例代碼,用 `getattr` 代替了 `exec` 和 `eval`,并重寫了相應的解釋文字。
* 在 第?3.2?節 “List 介紹” 中添加了列表操作的示例。
* 在章節末尾的小節部分 (第?3.8?節 “小結” 和 第?4.9?節 “小結”) 添加了指向相關內容的鏈接。
## 2001-01-31 (2.0)
* 把 第?5.6?節 “專用類方法” 分成了三節: 第?5.5?節 “探索 UserDict:一個封裝類”、第?5.6?節 “專用類方法” 和 第?5.7?節 “高級專用類方法”。
* 修改了關于 垃圾收集 的注解以指出 Python 2.0 及其后續版本自動處理循環引用,無需手工編碼。
* 修復了 UNIX 下載,使之包括了所有相關文件。
## 2001-01-15 (1.9)
* 刪除了 第?2?章 _第一個 Python 程序_ 的概論。
* 刪除了 第?4?章 _自省的威力_ 的概論。
* 刪除了 第?5?章 _對象和面向對象_ 的概論。
* 大刀闊斧地改動文本。我似乎總是跑題。
## 2001-01-12 (1.8)
* 為 第?3.4.2?節 “一次賦多值” 添加了更多示例。
* 添加了 第?5.3?節 “類的定義”。
* 添加了 第?5.4?節 “類的實例化”。
* 添加了 第?5.6?節 “專用類方法”。
* 一些小的樣式表調整,包括為 `link` 標記添加了標題。要是你的瀏覽器夠酷的話,它會用一個可愛的提示框顯示鏈接目標的描述。
## 2001-01-03 (1.71)
* 對樣式表進行了幾處修改,提高了對瀏覽器的兼容性。
## 2001-01-02 (1.7)
* 添加了 第?2?章 _第一個 Python 程序_ 的概覽。
* 添加了 第?4?章 _自省的威力_ 的概覽。
* 添加了 第?5?章 _對象和面向對象_ 的小結部分[后來刪除了]。
* 添加了 第?5.9?節 “私有函數”。
* 添加了 第?6.3?節 “for 循環”。
* 添加了 第?3.4.2?節 “一次賦多值”。
* 編寫了把書輸出為單個 HTML 文件、PDF、Microsoft Word 97 和純文本的腳本。
* 注冊了域名 `diveintopython.org` 并把書――在線的和離線的――都移到了那里。
* 修改了 XSL 樣式表,以修改在每個頁面首尾顯示的導航鏈接。頁首加上了域名、版本號,以及跳到章目錄、總目錄和主頁的快速鏈接。
## 2000-12-11 (1.6)
* 添加了 第?4.8?節 “全部放在一起”。
* 完成了 第?4?章 _自省的威力_:在結尾添加了 第?4.9?節 “小結”。
* 在 第?5?章 _對象和面向對象_ 的開頭添加了 第?5.1?節 “概覽”。
## 2000-11-22 (1.5)
* 添加了 第?4.6?節 “and 和 or 的特殊性質”。
* 添加了 第?4.7?節 “使用 lambda 函數”。
* 添加了附錄 五分鐘回顧。
* 添加了附錄 技巧和竅門。
* 添加了附錄 示例清單。
* 添加了附錄 修訂歷史。
* 擴寫了 第?3.6?節 “映射 list” 中映射列表的示例。
* 把更多的常用術語加入了 XML 實體。
* 升級到 DocBook XSL 樣式表 1.25 版。
## 2000-11-14 (1.4)
* 添加了 第?4.5?節 “過濾列表”。
* 為 第?4.3?節 “使用 type、str、dir 和其它內置函數” 添加了 `dir` 文檔。
* 在 第?3.3?節 “Tuple 介紹” 中,添加了 `in` 的示例。
* 添加了 MacPython 環境下 `if` `__name__` 技巧的額外說明。
* 轉向了 由 Michael Kay 編制的 SAXON XSLT 解析器。
* 升級到 DocBook XSL 樣式表 1.24 版。
* 添加了 db-html 處理的說明:在每個章、節中都加上了顯示的文件名,避免在添加或重排節時導致深層鏈接實效。
* 把一些常用術語加入了 XML 實體。
* 把幾個 `literal` 標記改為了 `constant`。
## 2000-11-09 (1.3)
* 添加了關于動態代碼執行的部分。
* 在所有有必要的地方,都添加了對本書其它部分的引用鏈接。
* 擴寫了 第 2 章概覽,解釋了這個函數的實際作用。
* 顯示地聲明示例代碼是在 GNU General Public License 下發布的;添加了該 License 的附錄。 [Note 8/16/2001:代碼在與 GPL 調和的 Python license 下重新發布了。]
* 修改了鏈接,以使用 `xref` 標記――我弄明白怎么使用了這個標記了。
## 2000-11-06 (1.2)
* 添加了第 2 章的前四部分。
* 進一步緊縮了了序言,并添加了指向 Python 的 Mac OS 版本的鏈接。
* 擴寫了“映射列表”和“連接字符串”中的示例,使其更富邏輯性。
* 添加了第 1 章小結中的輸出。
## 2000-10-31 (1.1)
* 完成了第 1 章關于映射、連接的部分,以及整章小結。
* 在序言使用了較緩和的措辭,并添加了針對非程序員的入門教程的鏈接。
* 修正了幾處拼寫錯誤。
## 2000-10-30 (1.0)
* 原始發布
- 版權信息
- 第?1?章?安裝 Python
- 1.1.?哪一種 Python 適合您?
- 1.2.?Windows 上的 Python
- 1.3.?Mac OS X 上的 Python
- 1.4.?Mac OS 9 上的 Python
- 1.5.?RedHat Linux 上的 Python
- 1.6.?Debian GNU/Linux 上的 Python
- 1.7.?從源代碼安裝 Python
- 1.8.?使用 Python 的交互 Shell
- 1.9.?小結
- 第?2?章?第一個 Python 程序
- 2.1.?概覽
- 2.2.?函數聲明
- 2.3.?文檔化函數
- 2.4.?萬物皆對象
- 2.5.?代碼縮進
- 2.6.?測試模塊
- 第?3?章?內置數據類型
- 3.1.?Dictionary 介紹
- 3.2.?List 介紹
- 3.3.?Tuple 介紹
- 3.4.?變量聲明
- 3.5.?格式化字符串
- 3.6.?映射 list
- 3.7.?連接 list 與分割字符串
- 3.8.?小結
- 第?4?章?自省的威力
- 4.1.?概覽
- 4.2.?使用可選參數和命名參數
- 4.3.?使用 type、str、dir 和其它內置函數
- 4.4.?通過 getattr 獲取對象引用
- 4.5.?過濾列表
- 4.6.?and 和 or 的特殊性質
- 4.7.?使用 lambda 函數
- 4.8.?全部放在一起
- 4.9.?小結
- 第?5?章?對象和面向對象
- 5.1.?概覽
- 5.2.?使用 from _module_ import 導入模塊
- 5.3.?類的定義
- 5.4.?類的實例化
- 5.5.?探索 UserDict:一個封裝類
- 5.6.?專用類方法
- 5.7.?高級專用類方法
- 5.8.?類屬性介紹
- 5.9.?私有函數
- 5.10.?小結
- 第?6?章?異常和文件處理
- 6.1.?異常處理
- 6.2.?與文件對象共事
- 6.3.?for 循環
- 6.4.?使用 `sys.modules`
- 6.5.?與目錄共事
- 6.6.?全部放在一起
- 6.7.?小結
- 第?7?章?正則表達式
- 7.1.?概覽
- 7.2.?個案研究:街道地址
- 7.3.?個案研究:羅馬字母
- 7.4.?使用 {n,m} 語法
- 7.5.?松散正則表達式
- 7.6.?個案研究:解析電話號碼
- 7.7.?小結
- 第?8?章?HTML 處理
- 8.1.?概覽
- 8.2.?sgmllib.py 介紹
- 8.3.?從 HTML 文檔中提取數據
- 8.4.?BaseHTMLProcessor.py 介紹
- 8.5.?locals 和 globals
- 8.6.?基于 dictionary 的字符串格式化
- 8.7.?給屬性值加引號
- 8.8.?dialect.py 介紹
- 8.9.?全部放在一起
- 8.10.?小結
- 第?9?章?XML 處理
- 9.1.?概覽
- 9.2.?包
- 9.3.?XML 解析
- 9.4.?Unicode
- 9.5.?搜索元素
- 9.6.?訪問元素屬性
- 9.7.?Segue [9]
- 第?10?章?腳本和流
- 10.1.?抽象輸入源
- 10.2.?標準輸入、輸出和錯誤
- 10.3.?查詢緩沖節點
- 10.4.?查找節點的直接子節點
- 10.5.?根據節點類型創建不同的處理器
- 10.6.?處理命令行參數
- 10.7.?全部放在一起
- 10.8.?小結
- 第?11?章?HTTP Web 服務
- 11.1.?概覽
- 11.2.?避免通過 HTTP 重復地獲取數據
- 11.3.?HTTP 的特性
- 11.4.?調試 HTTP web 服務
- 11.5.?設置 User-Agent
- 11.6.?處理 Last-Modified 和 ETag
- 11.7.?處理重定向
- 11.8.?處理壓縮數據
- 11.9.?全部放在一起
- 11.10.?小結
- 第?12?章?SOAP Web 服務
- 12.1.?概覽
- 12.2.?安裝 SOAP 庫
- 12.3.?步入 SOAP
- 12.4.? SOAP 網絡服務查錯
- 12.5.?WSDL 介紹
- 12.6.?以 WSDL 進行 SOAP 內省
- 12.7.?搜索 Google
- 12.8.? SOAP 網絡服務故障排除
- 12.9.?小結
- 第?13?章?單元測試
- 13.1.?羅馬數字程序介紹 II
- 13.2.?深入
- 13.3.?romantest.py 介紹
- 13.4.?正面測試 (Testing for success)
- 13.5.?負面測試 (Testing for failure)
- 13.6.?完備性檢測 (Testing for sanity)
- 第?14?章?測試優先編程
- 14.1.?roman.py, 第 1 階段
- 14.2.?roman.py, 第 2 階段
- 14.3.?roman.py, 第 3 階段
- 14.4.?roman.py, 第 4 階段
- 14.5.?roman.py, 第 5 階段
- 第?15?章?重構
- 15.1.?處理 bugs
- 15.2.?應對需求變化
- 15.3.?重構
- 15.4.?后記
- 15.5.?小結
- 第?16?章?函數編程
- 16.1.?概覽
- 16.2.?找到路徑
- 16.3.?重識列表過濾
- 16.4.?重識列表映射
- 16.5.?數據中心思想編程
- 16.6.?動態導入模塊
- 16.7.?全部放在一起
- 16.8.?小結
- 第?17?章?動態函數
- 17.1.?概覽
- 17.2.?plural.py, 第 1 階段
- 17.3.?plural.py, 第 2 階段
- 17.4.?plural.py, 第 3 階段
- 17.5.?plural.py, 第 4 階段
- 17.6.?plural.py, 第 5 階段
- 17.7.?plural.py, 第 6 階段
- 17.8.?小結
- 第?18?章?性能優化
- 18.1.?概覽
- 18.2.?使用 timeit 模塊
- 18.3.?優化正則表達式
- 18.4.?優化字典查找
- 18.5.?優化列表操作
- 18.6.?優化字符串操作
- 18.7.?小結
- 附錄?A.?進一步閱讀
- 附錄?B.?五分鐘回顧
- 附錄?C.?技巧和竅門
- 附錄?D.?示例清單
- 附錄?E.?修訂歷史
- 附錄?F.?關于本書
- 附錄 G. GNU Free Documentation License
- G.0. Preamble
- G.1.?Applicability and definitions
- G.2.?Verbatim copying
- G.3.?Copying in quantity
- G.4.?Modifications
- G.5.?Combining documents
- G.6.?Collections of documents
- G.7.?Aggregation with independent works
- G.8.?Translation
- G.9.?Termination
- G.10.?Future revisions of this license
- G.11.?How to use this License for your documents
- 附錄 H. GNU 自由文檔協議
- H.0. 序
- H.1.?適用范圍和定義
- H.2.?原樣復制
- H.3.?大量復制
- H.4.?修改
- H.5.?合并文檔
- H.6.?文檔合集
- H.7.?獨立著作聚集
- H.8.?翻譯
- H.9.?終止協議
- H.10.?協議將來的修訂
- H.11.?如何為你的文檔使用本協議
- 附錄 I. Python license
- I.A. History of the software
- I.B.?Terms and conditions for accessing or otherwise using Python
- 附錄 J. Python 協議
- J.0. 關于譯文的聲明
- J.A.?軟件的歷史
- J.B.?使用 Python 的條款和條件