前言

前言

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

1Monty Python,英国的一个超现实幽默表演团体,喜剧界的披头士,在20世纪70年代风靡全球。Python语言的命名来源于此。——编者注

与以往一样,我要深深地感谢让本书以前各版得以付梓的人。这里我要特别感谢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在本书编写期间给予的宽容。

目录

  • 版权声明
  • 前言
  • 引言
  • 第 1 章 快速上手:基础知识
  • 第 2 章 列表和元组
  • 第 3 章 使用字符串
  • 第 4 章 当索引行不通时
  • 第 5 章 条件、循环及其他语句
  • 第 6 章 抽象
  • 第 7 章 再谈抽象
  • 第 8 章 异常
  • 第 9 章 魔法方法、特性和迭代器
  • 第 10 章 开箱即用
  • 第 11 章 文件
  • 第 12 章 图形用户界面
  • 第 13 章 数据库支持
  • 第 14 章 网络编程
  • 第 15 章 Python和Web
  • 第 16 章 测试基础
  • 第 17 章 扩展Python
  • 第 18 章 程序打包
  • 第 19 章 趣味编程
  • 第 20 章 项目1:自动添加标签
  • 第 21 章 项目2:绘制图表
  • 第 22 章 项目3:万能的XML
  • 第 23 章 项目4:新闻汇总
  • 第 24 章 项目5:虚拟茶话会
  • 第 25 章 项目6:使用CGI进行远程编辑
  • 第 26 章 项目7:自建公告板
  • 第 27 章 项目8:使用XML-RPC共享文件
  • 第 28 章 项目9:使用GUI共享文件
  • 第 29 章 项目10:自制街机游戏
  • 附录 A 简明教程
  • 附录 B Python参考手册