Python基础教程(第3版)
上QQ阅读APP看书,第一时间看更新

前言

巨蟒剧团Monty Python,英国的一个超现实幽默表演团体,喜剧界的披头士,在20世纪70年代风靡全球。Python语言的命名来源于此。——编者注有首老歌唱道:“又来了一个,它走了又来。又来了一个,什么时候是个头?”自本书第2版面世以来,Python 3的普及程度得到了极大提高,因此这一版完全转向了Python 3。在此期间,还有其他的变化:在Python生态系统中,各种包轮番登场,各种编码实践大行其道后又日渐式微。在必要之处或对读者有帮助的前提下,本书的有些部分完全重写,但最初的痕迹还依稀可见。例如,本书前身Practical Python于21世纪初出版时,Usenet依然应用广泛,可现在大多数互联网用户可能从未听说过它。因此,对于第23章创建连接到NNTP服务器的项目,与其说是为了介绍主流编程生涯中将用到的编程技能,不如说是让读者了解一下历史。一些比较古怪的内容也依旧保留,因为它们是很不错的编程示例,也是本书悠长历史的见证。

与以往一样,我要深深地感谢让本书以前各版得以付梓的人。这里我要特别感谢Mark Powers,感谢他在我进度缓慢时极具耐心。还要感谢Michael Thomas,感谢他出色的技术审阅工作(并指出了原稿中所有的Python 2式print语句)。但愿你喜欢全新升级后的这一版。正如Terny Jones在提到那首老歌时所说:“显然,有一个完整的管弦乐队会更好。”


第2版前言


新版的《Python基础教程》终于和大家见面了。如果算上本书的前身Practical Python,实际上这已经是第3版了。这是我将近10年心血的结晶。在此期间,Python发生了很多有趣的变化,我也尽力调整了对这门语言的介绍。当前,Python处于长期以来最为翻天覆地的转变期:Python 3推出。编写本书期间,最终版本还未发布,但其包含的功能已确定,还推出了多个可用的版本。这次修订不向后兼容,这是我编写这一版时面临的最大挑战。换而言之,我不能仅仅挑出一些新增的功能进行介绍。另外,它还修改了一些既有的功能,因此有些在Python 2.5中理所当然的事情在新版本中已不再正确。

倘若整个Python社区都立即转向Python 3并修改所有的遗留代码,那根本不成问题。我只需介绍Python 3就行!然而,目前依然存在大量用Python 2编写的代码,而且大家可能还会继续编写这样的代码,直到有一天所有人都认为应使用Python 3。

那么我是如何应对这种变化的呢?首先,虽然有些向后兼容的变化,但Python语言本身总体变化不大。因此,如果完全针对Python 2.5,编写的内容对Python 3来说也是大体正确的(对Python 2.6来说更是如此)。至于那些不再正确的部分,我采取了比较保守的态度,因为大家完全接受Python 3还需要一段时间。因此,这一版主要是基于Python 2.5编写的,同时指出将会改变的情形。另外,我还提供了附录D,让你对重大变化有大致的了解。对大多数读者来说,这样处理是完全可行的。

编写这一版期间,有几个人帮了我很大的忙。与前两版(本书第1版以及之前的Practical Python)一样,Jason Gilmore扶我上马,并在项目启动期间扮演了重要角色。项目启动后,Richard Dal Porto、Frank Pohlmann和Dominic Shakeshaft不断伸出援手,保证项目得以顺利进行。在确保代码正确方面,Richard Taylor居功至伟(倘若代码依然存在错误,责任在我),而Marilyn Smith出色地完成了手稿润色工作。这里还要感谢Apress出版社的其他工作人员,他们是Liz Berry、Beth Christmas、Steve Anglin和Tina Nielsen。另外,感谢包括Bob Helmbold和Waclaw Kusnierczyk在内的读者提出勘误和宝贵的建议。最后,在本书前两版的出版过程中,很多人都提供了帮助,这里衷心地感谢他们。


第1版前言


几年前,Jason Gilmore找到我,让我为Apress出版社写本书。他看了我撰写的Python在线教程,想让我写一本风格类似的书。我受宠若惊,既兴奋又有点紧张。我最关心的是,这需要多长时间、对学业会有多大的影响,因为当时我正在读博士。结果表明,这是一项非常艰巨的任务,花费的时间远远超出了预期。

所幸这对我的学业没有太大的影响,我按时获得了博士学位。

去年,Jason又找到我说,Apress出版社想让我对原书进行修订和扩充,不知道我是否有兴趣。当时我正忙于熟悉新取得的副教授职位,而业余时间都花在了扮演Peer Gynt上,因此时间依然是主要的问题。事情安排妥当并有更多业余时间后,我接受了这项任务。你可能猜到了,最终的结晶就是你现在手捧的这本书。本书的大多数内容都来自Practical Python,但基于Python的最新变化做了全面修订,同时新增了几章。另外,根据这一版的组织结构,调整了原来一些内容的位置。很多读者对Practical Python提供了积极的反馈,但愿本版保留了读者喜欢的内容,同时新增的内容也能得到读者青睐。

本书编写期间,有几个人不断地给予我帮助和鼓励。没有他们,本书根本不可能付梓。这里对他们表示衷心的感谢。感谢本书编写期间直接与我协作的团队:Jason Gilmore让这个项目得以上马并确保不偏离方向;Beckie Stones整理各种材料;Jeremy Jones和Matt Moodie提供了专业的意见和见解;Linda Marousek对我极具耐心;还有其他成员让本书得以顺利出版。如果没有Practical Python打下的基础,本书不会是现在这个样子。这里要感谢Jason Gilmore和Alex Martelli出色的技术编辑工作(Jason负责全书,Alex负责前半部分)以及本职之外的各种意见和建议。感谢Erin Mulligan和Tory McLearn一路上领我前行,并在需要时让我调整方向。感谢Nancy Rapoport对手稿进行润色。感谢Grace Wong回答他人无法回答的问题。感谢Pete Shinners就项目10的游戏提供宝贵的建议。感谢多位读者的来信,这些来信给了我极大的鼓励!最后,感谢我的家人和朋友,尤其是女朋友Ranveig在本书编写期间给予的宽容。