python基础教程(第二版)序和前言

python基础教程(第二版)序和前言_第1张图片

英文版书名:Beginning Python From Novice to Professional(Second Edition)

作者:【挪】Magnus Lie Hetland

译者:司维、曾军崴、谭颖华

人民邮电出版社

一、译者序(2010年2月)

和大多数Python爱好者、使用者和开发者一样,我也是通过偶然的机会才接触了这门可以用 “优美”来形容的程序设计语言:在大二下学期的时候,数据结构课程的一道习题让我百思不得其解,于是我就上网寻找答案,最后在某个编程网站上找到了参考方案。不过,代码是用一种我没见过的语言编写的。之后的事情自然是我从网上下载了Python的解释器和文档,把Python当作新玩具一样爱不释手地输入一行行代码去试验和探索。当时那种久违的兴奋和震惊,只有在小学学习Logo语言初次接触程序设计的时候才有过。

为了能够更系统地了解Python,我开始寻找教程。学校图书馆只有一本《新华字典》大小的Python手册,使用的版本还是2.0版。无奈中只好求助于网络,最初找到了两本教程:其中一本是很多国内Python爱好者的启蒙教程,后来由著名Python社区啄木鸟组织翻译的《深入Python》,另外一本就是本书的前身Practical Python;接着我顺藤摸瓜査到了刚刚出版的本书第1版的英文版。在试读了几页内容之后,我萌生了和朋友一起翻译的想法,不过,当时只是将其作为一种“强迫”自己将原版文字掰开来揉碎了进行理解的方式。在完成前十章后,谭颖华老师通过MSN联系到我,吿诉我本书已经由图灵公司引进,希望能够使用我们的翻译版本。

对我来说,兴奋过后感受到了前所未有的压力。事实上就算我预料到了可能的困难,却低估了其难度。出版社耐心地等待我们花了相当长时间完成了第1版,之后却被吿知原书第2版已经上市。接下来我们又只好逐行对照两个版本的区别进行更改。由于第2版中增加了大量的Python 3.0相关的内容,这项工作实际上比第1版翻译还要耗费精力。不过这也给了我们修正第1版错误、对语言进行润色的难得机会。

严格来说,本书前几章都在介绍最基本的程序设计理念,例如极限编程、面向对象程序设计,对于富有经验的开发人员,特别是从C/C++或其他语言转型过来的开发人员来说,可以直接跳过这些章节。但对于没有多少开发经验或者准备以Python进行编程入门的新手来说,这些章节则是不容错过的。作者对Python语言的各个方面的剖析准确而到位,各部分会花上不同篇幅确保读者理解而又不会浪费时间。书中各个章节分工明确,对Python从语法到编译打包、从测试到GUI程序的各个方面都进行了介绍并辅以大量实例。

无论是经验丰富的髙手还是初出茅庐的新人,本书最后的10个项目都是难得的练手机会——这也是本书不同于其他Python教程的特色之一。这10个项目基本覆盖了前面章节所提到的各种知识点,同时又不乏趣味性和实用性。

本书第2、3、9、11、14、17和21章由曾军崴翻译,其余章节由司维翻译。谭颖华老师负责全书的统稿和润色,并且承担了第2版中大部分章节的琐碎繁杂却重要的更新工作。虽然我们尽力保证译文的正确和通顺,但限于自身的程序设计和文字表达水平,问题在所难免,希望读者在容忍的同时能够指正,在论坛、Blog或者图灵网站上指出都可。希望此译本能在读者学习Python以及推广这门语言方面有所帮助。

二、作者序

新版的《Python基础教程》终于和大家见面了。如果算上这本书的前身Practical Python实际上这已经是第3版了。这本书也让我投入了近10年时间,这期间,Python发生了许多有趣的变化,我也在尽力更新我对这门语言的介绍。同时,Python也面临着在相当长的一段时间内最具标志性的变化:推出了第3版。在本书撰写时,最终版本还没有发布,但是其特性已跃然纸上,并且已经推出了几个可用的版本。这次升级带来一个很有意思的挑战,就是它不再向下兼容。换句话说,它并不是简单地增加一些功能,让我可以挑挑捡捡地写进书中。它同时还会改变已经存在的语言,也就是说Python 2.5版本中的某些特性在新版本将不会保留。

要是整个Python社群都立即着手转换到新版本,更新所有遗留代码,那当然不会有什么问题。我只要讲解新的语言就可以了!但是,大量用旧版编写的代码还会存在,并且仍然有可能继续编写,直到第3版完全板上钉钉。

那么,怎么应付这个变化呢?首先,就算新版本有些不兼容的改变,但语言的大部分还是相同的。也就是说,如果我的程序完全用Python2.5编写,基本上在Python3上也能运行(在兼容版本2.6版上更不成问题)。对于那些不再正确的部分,我则比较保守一些,并且猜测Python 3完全被大家接受还需要一定时间。本书基本上基于2.5版本,显著的改变会通过文字体现出来。除此之外,我还增加了一个附录D,概要介绍了一些主要改变。对于大多数读者来说,我觉得应该够了。

在撰写本书第2版时,我得到了许多人的帮助。就像在写前两版(本书第1版和之前的Practical Python)一样,Jason Gilmore扶我上马,并且在项目进展的过程中扮演了重要角色。Richard Dal Porto、FrankPohlmanr和Dominic Shakeshaftft过程中也常助我一臂之力。Richard Taylor至关重要,他要确保代码完全正确(如果还是有错,大家骂我好了),而Marilyn Smith为我的写作润色不少。 我还要感谢Apress的其他同仁们,包括 LizBerry、Beth Christmas, Steve Angli和Tina Nielsen,还有那些帮我修订错误以及提出宝贵意见的读者们,其中包括Bob Helmbold和OWaclaw Kusnierczyk。 当然,我还要感谢所有那些将本书的前两版本买回家的读者们。

三、第一版前言

几年前,Jason Gilmore建议我为Apress出版社写本书。他读了我的在线Python教程,希望我以类似的风格撰写一本书。我受宠若惊,也很兴奋,还有点紧张。最让我担心的就是写书要花费多长时间,以及它对于我的学业(我当时是博士生)有多大影响。这件事结果成了一项艰巨的任务,而且花的时间比我预期的长很多。幸运的是,它没有过多地影响我的学习,我也按时获得了博士学位。

去年,Jason又联系了我。Apress出版社希望修订本书,问我是否有兴趣。那时候我正忙着熟悉新的副教授职位,而几乎所有的业余时间都用来扮演皮尔•金特(PeerGynt)了,所以时间又变成了主要问题。最终(在事情安排妥当一些,而且我也有更多的业余时间之后),我同意了修订那本书,而本书(我相信你已经猜到了)就是最终的成果。大多数的资料都是从本书的第1版Practical Python (Apress, 2002)中拿来的。本书基于Python语言的最新更新,对现有的内容进行了全面的修订,增加了几个新章节。有些旧的内容也进行了重新分配,以适应新的结构。我从读者那里得到了不少关于第1版的正面反馈——所以我希望能够继续保留读者所喜爱的特点,并且锦上添花。

如果没有其他人对我的持续帮助和鼓励,这本书是无法完成的。我衷心地感谢他们。特别要感谢在本书撰写过程中和我一起工作的团队:Jason Gilmore,感谢他落实了这个项目并且将项目引导至正确的方向!Beckie Stones,感谢她将所有内容整理在一起,Jeremy Jones和MattMoodie,感谢他们专业的意见和洞察力;Linda Marousek,感谢她对我如此耐心。我还要感谢团队中的其他人,感谢他们让这个过程变得如此顺利。但是如果没有那些在前一版本中和我一起工作的人所付出的努力,这本书也是无法完成的。我要感谢Jason Gilmore和Alex Martelli,感谢他们杰出的技术编辑工作(Jason负责整本书,Alex负责前半部分)以及工作职责之外的修改意见和建议,Erin Mulligan和Tory McLeam,感谢他们在撰写过程中和我共同进退,在我需要的时候给予我敦促;Nancy Rapoport,感谢她对我的文稿进行润色,Grace Wong,感谢她在别人无法回答的时候给予我答案。Pete Shinners对项目十的游戏给过我一些有帮助的建议,我非常感谢她。对本书感到满意的读者也给我发来了邮件,这极大地鼓舞了我的斗志,感谢你们!最后,我要谢谢我的家人和朋友,以及我的女朋友Ranveig。在撰写本书的过程中,他们一直都宽容地陪伴着我。

四、前言

编写C程序就像拿着剃刀的人在刚打过蜡的舞场内跳快舞。——Waldi Ravens

C++:难以学习,生就如此。——匿名

Java在很多方面就像是C++。——Michael Feldman

现在请看一种前所未有的表演…… ——Monty Python的作品《飞行的马戏团》

我引用了别人的几句话来定下本书的基调,这当然很不正式。为了让大家可以轻松地阅读本书,我试图用一点幽默的方式来讨论Python编程的主题。幽默是Python社区的传统,而很多幽默都和Monty Python[Monty Python是20世纪70年代风靡全球的英国六人喜剧团体。]的滑稽短剧有关。所以我举的一些例子可能看起来有些傻,希望你能够接受。(Python这个名字是从Monty Python借鉴来的,而不是源于那条大蟒蛇。)

在这个前言中,我会简单地吿诉你Python是什么,为什么你应该使用它,谁应该使用它,本书的读者群是谁以及本书是如何组织的。

那么,什么是Python,为什么你要使用它呢?还是引用官方的说法吧(http://www.python.org/ doc/essays/blurb.html),Python就是“一种解释型的、面向对象的、带有动态语义的髙级程序设计语言”。这句话中的很多术语,你可以在阅读本书的过程中逐渐弄懂,但最重要的是,Python是一种使你在编程时能够保持自己风格的程序设计语,你不用费什么劲就可以实现你想要的功能,并且编写的程序清晰易懂(和当前流行的其他各种程序设计语言相比更是如此)。

尽管Python可能不会像C或者C++那样的编译型语言一样快,但是Python依然值得一用,因为它可以让你节约编程时间,而大多数程序的运行速度差异可能并不是么显而易见。如果你是个C程序员,你可以在以后轻松地用C实现程序的关键部分,让它们和使用Python编写的部分相互协作。如果你之前没有任何编程的经历(而且可能被我前面提到的C和C#的话唬住了),那么既简单又强大的Python就是你入门的完美选择。

那么谁该使用Python呢?自从Guido van Rossum在20世纪90年代初创造这门语言以来,它的支持者就一直在稳步增加,而且近些年来,社区对它的兴趣也日益浓厚。Python广泛用于系统管理工作(比如它是很多Linux发行版的重要组成部分),它也可以用于教授零起步的入门者编程。 NASA在它的几个系统中既用Python开发,又将其作为脚本语言。Industrial Light & Magic在高预算影片中使用Python制作影片的特效,Yahoo!使用它(包括其他技术)管理讨论组,Google用它实现Web爬虫和捜索引擎中的很多组件。Python正在用于计算机游戏和生物信息等各种领域。不久后可能就会有人问了:“谁不用Python呢?"

本书面向那些希望学习如何使用Python编程的读者,其内容适合广泛的读者群,不管你是程序设计的新手还是髙级计算机用户。如果你之前从未写过程序,那么你应该从第1章开始阅读,直到你觉得所学的内容对你来说有些超前了(真的有可能会这样),此时你就应该开始实践,编写自己的程序,待时机成熟,你就可以再回到书本上,学习那些更复杂的内容了。

如果你已经知道如何编程,那么,你对一些介绍性的内容一定不会感到新鲜了(但是,文中可能到处都有一些让人惊讶的细节)。你可以快速阅读前面的章节,从而了解Python是如何工作的,或者阅读附录A,它是基于我的在线Python教程“Instant Python”写成的。它会让你快速了解很多重要的Python概念。有了大概印象后,你可以直接跳到第10章(讨论Python标准库)。

本书的后半部分包括10个程序设计项目,展示了Python语言的不同功能。不管是新手还是专家,都会对这些项目感兴趣。尽管后面项目中的一些内容对于没有经验的程序员来说可能有些难, 但是(在读完本书的前半部分后)按照项目顺序完成应该还是可能的。

这些项目包括了多方面的主题,多数对你编写自己的程序都很有用。你可以学会做一些你现 在完全不会做的事情,比如创建聊天服务器、点对点的文件共享系统或者功能完备的计算机图形游戏等。乍一看,你会觉得很多内容都很难,但是到了最后,我想你会惊讶于它们实际上是如此简单。如果你想下载源代码,可以访问http://www.apress.com。

好了,冗长的介绍我自己都觉得烦了,郞么我们就开始学习Python编程吧,从第1章或者附录A开始。祝你好运,编程愉快。

你可能感兴趣的:(python基础教程(第二版)序和前言)