多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 附录 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) * 原始发布