可爱的 Python: 更新您的 Python 读物列表,第 3 部分

Python 书籍的收集和追踪

自 David 的最近书籍综述发表在“可爱的 Python”专栏以来,又出版了许多关于 Python 的有趣书籍。本文将提供最近的 Python 书籍(或在上次综述中遗漏的书籍)的新比较评论。

David Mertz (mertz@gnosis.cx), 博士,报章作家, Gnosis Software, Inc.

David Mertz 的照片David Mertz 作为猎人、渔夫和牧羊人的失败导致了他的评论性批评生涯。明天他也许会尝试点别的。可以通过 mertz@gnosis.cx和 David 联系;在 http://gnosis.cx/publish/上了解他的生活。欢迎提出关于本栏过去、现在和将来的意见和建议。



2002 年 5 月 09 日

Python 书籍已经开始稳步占据着书店书架空间的更大份额。自从我开始发表这些综述以来,现可称为“废品”的有关 Python 的书籍数量可能已经是原来的四倍。而这还不包括许多在 Web 上发布的有关 Python 的出色的电子文档(包括一些未经删节的书籍)。本文谈及的几本 Python 书籍已在前几个月就放到了我的书架上。

与 Web 相关的书籍

关于 Python 和 Web 的两本书

我最近看到两本书:Holden 和 Beazley 合著的 Python Web Programming以及 Thiruvathukal、Christopher 和 Shafaee 合著的 Web Programming in Python,它们涉及的材料范围几乎相同。这两本书的反响都很好,体现它们各自的出版商 New Riders 和 Prentice Hall 的极佳信誉。很难推荐这两本书中哪一本比另一本更好,所以让我指出一些区别。

Python Web Programming对用 Python 语言进行 XML 编程进行了相当好的介绍。虽不如 Python & XML(将在下面进行讨论)那样面面俱到,但它是一本实实在在的入门教材。与此相反, Web Programming in Python省略了 XML,但提供了对 Linux、Apache 和 MySQL 的介绍(就象其完整的书名指出的那样)。这两本书都用了大约 100 页的篇幅来解释 Python 本身,但 Python Web Programming在介绍 Python 的同时,花了更多的笔墨在随 Python 提供的通用联网库上。两本书都根据所涉及的不同主题以一些具体的样本应用程序作为结束,但如果您的目标是要使用这些样本作为自己开发项目的模板,那么 Web Programming in Python或许是个更好的选择 — 与此同时, Python Web Programming对此更多的是给人一点参考大全/学术的感觉。

与 Web 相关的书籍一览

两本书都包含索引,但 Python Web Programming在索引中添加了一张词汇表(在因特网首字母缩写词的领域方面很有用)和一份关于 Python 版本变更情况的附录。选择任何一本书都不会有错(假定您正在寻找有关 Python 和 Web 的书籍),但对于网站开发人员来说, Web Programming in Python感觉起来更有用一点。假定您 确实想要将 Linux、Apache 和 MySQL 与 Python 一起使用,那么 Web Programming in Python 足以满足要求,而无需两三本其它书籍。当然,如果您坚持对于站点使用 Windows,或更糟糕地,还使用 IIS/MSSQL,那么 Web Programming in Python中很少有内容会与此有关。 Python Web Programming(大部分内容)始终坚持讨论与跨平台相关的内容。

Python & XML

Jones 和 Drake 合著的 Python & XML的缺点是,如果您想要在 Python 中使用 XML,那么必须买这本书。我以前评论过 McGrath 的 XML Processing with Python,它涉及相似的内容范围。但就所有各方面而言,我更喜欢 Jones 和 Drake 的书。 Python & XML的文字很清晰、详细而且通常很精确 — 当然是与它解释的 XML 标准文档相比较而言。有几处叙述 XML 复杂性特点的地方稍有错误 — 诸如第 27 页上暗示有四个而不是五个固有实体(遗漏了 &)— 但总体上,这是我遇到的理解 XML 的最佳书籍。

不管标题有没有指出, Python & XML确实是一本有关 XML 的书,而不是有关 Python 的书。也就是说,它没有象标题所说的那样包含对 Python 语言的解释 — 它假定读者了解 Python(但不必了解 XML 库)。所讨论的 XML 库基本上有四部分:Python 2.0+ 中的内置支持;(XML-SIG 的)PyXML;Fourthought Inc. 的 4Suite 和用于 MSXML 的绑定(在 Windows 上)。对于一些其它库在附录中有简短的叙述。总体上,该书中的示例与 Python 的标准库 XML 支持兼容。


学习该语言的书籍

Python Programming Patterns

Thomas W. Christopher 的 Python Programming Patterns是 Python 资源库中不可多得的好书。很明显,该书旨在作为著名的 Design Patterns: Elements of Reusable Object-Oriented Software(由“四人组(Gang of Four (GoF))”— Gamma、Helm、Johnson 和 Vlissides — 编写)的参考书。但 Python Programming Patterns实际上并不是将 Design Patterns的内容用 Python 示例摘要重述;而是在它尝试那样做的同时, 试图成为介绍 Python 本身的第一本书。有关 Christopher 这本书的几篇引人注目的负面评论已经出现在 comp.lang.python 上。虽然我承认这本书有一些缺点,但我认为某些评论的想法误解了该书的意图。

我认为 Python Programming Patterns不象一本关于 Python 的书,而象一本关于编程的书。每章都介绍了一些新的 Python 构造,而同时使用那些构造来解释几个常规的计算机科学概念。同样,Christopher 书的对象不是那些设法了解 Python 的读者,因为它是一本介绍计算机科学中级课程的书。甚至高级程序员在阅读时,也会觉得一些常规概念很有趣。也就是说,为了最好地达到其写作目的, Python Programming Patterns花了过多的时间来解释基本的 Python 构造。已深入学习而足以理解“模式”的读者能比学这本书更快地 掌握Python 语法;而刚开始编程的读者则可能完全迷失在抽象概念中。总之,该书可以更集中地讨论几点内容。

Visual QuickStart Guide: Python

Chris Fehily 所著的这本书由 Peachpit Press 出版,它在封面用粗体宣称,“快速轻松地自学 Python!这本 Visual QuickStart Guide 使用了图片来取代冗长的解释。立即开始学习吧!”。稍安毋躁,请考虑一下出版商决定使用 36 号字体要表达什么。依我之见,毫无疑问这是一个不祥的开始。

Visual QuickStart Guide: Python充斥了大量的图片,差不多每一页上都有。许多图片都是半相关的 shell 会话样本;但也有相当一部分的其它图片几乎完全是多余的 Web 页面图片或者是包含 Fehily 的文本编辑器(倘若有人注意,编辑器通常在 MacOS 下,但也有时在 Windows 2000 下)窗口装饰的代码清单。在有些例子中,一些确实有用的表和图使该书有存在的价值。Fehily 的实际 文字非常好。但他受到出版商风格的约束,在每段的前面都会使用六种不同的分隔符样式中的一种(每一种显然表示该段落是关于什么的)。几句俏皮话也被很好地选入书中,并且很有趣,但它不利于 Python 语言的很系统性的学习。

开个玩笑,我决定查询一个中等模糊的主题 .__delattr__() 魔术方法。在索引中没有关于这个方法的清单,因此我以为书中没有讨论它。已经够了...此书适于初学者。然而,书中有一个 delattr() 内置函数的清单。在第 261 页上,我们找到一个称为“Manipulating Attributes”的标题,它的副标题描述了 delattr() 。由于该页内容很多,我最初认为表单 del obj.attr 被完全省略了;但是在该页其它地方的一个小的浮动分隔符中,它 真的被提到了。尽管如此,但也仅告诉我们这两者是等价的(而至于为什么这两者会同时存在则没有任何提示)。如果我不具备良好的 Python 知识,那么我想我会得到的印象是:这是一种非常糟糕的语言(而不是一种能够处理瞬时对象名称的语言)。

Core Python Programming

Wesley Chun 的 Core Python Programming已经受到了许多赞誉。而事实证明这些赞誉都是它应得的。我认为这是目前可用于自学 Python 的最佳书籍(除非您完全是编程新手,如果是那样的话,最好使用 Gauld 的 Learn to Program Using Python)。我推荐 Chun 的书,因为它比 Learning PythonProgramming PythonThe Quick Python Book都要好,尽管它们都是好书;而比起 Programming with PythonPython: Annotated Archives,我 一定会推荐上述几本书中的任何一本,我对这两本书都不是特别喜欢。 Python 2.1 Bible也很好,但它是为更高级的读者而编写的。(请参阅 参考资料一节以获取到一些专栏的链接,其中评论了这里提到的其它书籍。)

Core Python Programming的策略是对各种 Python 特性进行逻辑的、循序渐进的表示;但此书组织得很好,足以自成章节,因此您不必按顺序阅读。 Core Python Programming可以作为参考书,但它更适合于 Python 初学者。有一点使我非常喜欢 Chun 的方法,就是他慷慨地给出了说明每个概念的代码样本(而不象有些文本所做的那样尝试构建单个不断增长的应用程序 — 一种我觉得有点做作的方法)。通篇的解释、组织和排版都很清晰(尽管有几处底部页边距极窄,而在其它边距很大,这看上去有点怪)。

我觉得 Chun 的书有一个缺点,那就是比起其它同类书籍,它体积上显得过于庞大了,这样携带起来有点麻烦。作为书桌上的参考书,它的大小正好,但作为学习课本,它太大了。字体相当大,而且纸张相当厚。此外,再加上书的页数(一旦计算未编号的页数,大约 800 页),使它成为一本厚重的书。在不减少任何内容的情况下,将书的物理重量减少 30% 是可能的,而且有利于成为更有用的书籍(可能在下个版本中!)。

参考资料

Python Pocket Reference,第二版
当我上次阅读 Mark Lutz 的 Python Pocket Reference时,它还是第一版。其后,Python 经历了一些新版本,而且 Lutz 和 O'Reilly 也已经更新了这本薄薄的书籍。明显的更改,以及可能促使更新的主要动机,是 Python 2 在第二版中所涵盖的范围。但在更新的过程中, Python Pocket Reference从 74 页扩充到了 124 页,使它涉及到更实质性的领域。我以前的抱怨在很大程度上仍然存在着:没有索引,大多数内容都没有显示出它真正优于在线的语言和库参考大全。但少数额外页面使它总的来说能成为一本较好的书。

除了记载新特性以外,定期的澄清也被添加到现有 Python 特性的解释中 — 刚好足以保证这本书可能值得购买。当然,标价已经随着书的篇幅而提高,从 $6.95 (USD) 上涨到了 $11.95 (USD)。对于不能获取免费评估副本的人来说,这个价格可能还是要高于这本书本身的价值。

DOSSIER 系列
一家名为 Prime Time Freeware 的公司出版了许多书籍,书上有一根有趣的绞线。所有这些书的标题都基于公共领域中的文档,或基于自由撰写的、无版税的许可证。他们将这称为他们的“记载用于业界、教育和研究的开放源码软件(Documenting Open Source Software for Industry, Education and Research (DOSSIER))”系列,其中有两本是关于 Python 的: Python: Library ReferencePython: Miscellanea。第一本涵盖的内容完全和标题所说的一样,而后者包括许多较小的文档,诸如 Greg Ward 的“Distributing Python Modules”、Fred Drake 的“Documenting Python”、Python Reference Manual、Python Tutorial 以及来自 python.org 的其它文档。依我看来,将一组被忽略的文档 — Andrew Kuchling 极佳的“What's New in Python X.X?”系列 — 包含进来是很有价值的,该系列是查看版本间所做更改的最佳途径。

有关这些书籍的内容,我确实没有什么要补充的了。您可以自己在线阅读它们,而且我以前称赞过 Python 的标准文档的高质量。我可以说 DOSSIER 书籍的编排非常合理,字体和纸张都非常好,而且封面设计也非常吸引人(尽管各本书都相同)。很显然,该系列是根据“按需印刷”来安排印刷的,这样避免了库存的副本。同样,我期望该文档比 Python 2.0 更新(编排需要一些工作,但它基本上是基于 Python 团队提供的 LaTeX、Postscript 或其它可打印的格式)。而且,尽管我非常喜欢印刷的书籍,但我不能确定对于其它打折的书籍(特别是因为商业上已获版权的书籍通常都以低于标价的折扣价进行销售)来说,$35 是否真的是一个公平的价格。可以通过 Prime Time Freeware 的网站获得 DOSSIER 书籍(由 BSDMall 提供),而且不带有 ISBN。

如果有作者和出版商愿意让我对他们的书籍进行评论的话,欢迎通过我的电子邮件地址与我联系。只要时间允许,我将尽力尝试扩大将来书籍的覆盖面。

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Linux
ArticleID=21155
ArticleTitle=可爱的 Python: 更新您的 Python 读物列表,第 3 部分
publish-date=05092002