前 言
在某年的一次会议后,发到PyLadies组织者邮件列表的一封邮件问:“有人有兴趣写一本Python方面的书吗?”当时,我已经考虑撰写一本编程书很久了。在多年教课以及在PyLadies和其他编程聚会做指导之后,我意识到需要一本新的、特定类型的编程书。但是我并没有马上回复那封邮件。我知道写一本书是一项巨大的工程(确实是!),会耗费我大量的时间和精力。我在周末和节假日也要工作(是的,我又对了!)。我也知道我有一份教授编程课程的全职工作,同时也是乔治亚州亚特兰大本地PyLadies的主要组织者。我的孩子也会开始问我:“这个周末你要写书吗?”
以上内容都是真实的(实际上比我最初的想法还要多),但是我知道书籍很重要。非常多的学生会在课后问我:“现在我已经了解Python基础知识了,我能做些什么呢?”我的答案总是:“你可以参与一些开源项目!”或者“参加一些Python高级课程”。但是这些答案既不能让他们满意也不能让我满意。正确答案应该是:“你必须真正地寻找一些事情来做:解决一个问题或实现一个需求”。这是因为,真正理解编程和一门编程语言的唯一方式就是用这门语言去解决问题。
然而,另一个问题又出现了:“我没有真正需要解决的问题”。所以,虽然我可以让我的学生去了解开源项目,而这实际上也非常有帮助,但是如果不了解技术,他们可能会迷失,甚至放弃。这样社区就又失去了一位可能带来有趣东西的程序员。所以,在与家人和朋友做大量交流之后,我意识到需要撰写这本书。
本书目的
多年以来,一直有人问我们,“我在熟悉Python基础后能做些什么?”,“我能学到什么?”,“我该何去何从?”。解决以上问题就是撰写本书的目的所在。
对于编程书籍来说,很多人都曾经历过的一个长期问题是它们都是从语言基础到深层概念。这些概念只有拥有计算机科学学位的人才能理解。但这并不酷!编程的大门应该向任何有兴趣的人敞开。我们都应该致力于降低编程的门槛。我们觉得Python做到了这一点,但是我们需要更进一步,并且开始理解人们是如何学习抽象想法和概念的,帮助他们学习编程。
可以将编程想象成学习如何盖房子,只知道需要木料,但是不知道如何用木料盖房子。你仍然需要理解结构工程、电气、水管设施、通风、高压交流电(High Voltage Alternating Current,HVAC)等。编程也是一样。语言只解释了盖房子需要木料。还有很多与木料相关的东西。我们希望帮助你了解这些概念。
本书读者对象
本书并不适合想要学习Python的初学者。实际上,作为本书的读者,你需要拥有一些Python编程基础。这意味着你已经学过一些教程。你也应该理解空格在Python中的作用、列表被包含在方括号([])中、但字典被包含在花括号({})中。本书适用于那些初学者,但应该已经学过一两个教程。这些人理解Python基础,但对Python可以实现的功能很感兴趣。
俗语说的好,需要是发明之母。在你学习编程时,这句话非常正确。如果你需要软件来执行特定函数或任务,那么围绕着需求学习一门语言就很容易。你有需求,语言就会帮助你,学习语言,解决问题,你学到了知识,并且立即付诸实践。这太棒了!然而,如果你觉得编程很有趣,但却没有需求,不知道要实现什么,结果会怎样呢?这就是本书要解决的问题。
本书会帮助你学习大部分人不会对初学者讲述的Python部分。书中涉及的大部分工具和技术只有在实践中才会遇到。然而,对于没有特定问题需要解决的新手程序员来说,学习这些工具可能比较困难。在很长一段时间里,没有人想要向开发者介绍这些工具,因为它们真的很常用。我们希望可以带你领略Python的能力和辉煌。
你将学习如何编写一个Web应用,以及如何使用Python库与数据库通信。如果你是一名系统管理员,还可以学到可以加速工作流的系统工具。我们将简要介绍诸如安全和最佳实践的话题,概述如何使用Python库创建图形用户界面(GUI)。还将介绍如何编写和使用应用编程接口(Application Programming Interfaces,API),以及其他对Python程序员有用的话题。
本书内容简介
我们希望带你简要了解一下Python的基础知识,将向你介绍那些只有在解决问题时才会理解的概念。尽管我们不能在这里呈现所有将来可能需要解决的问题,但是我们希望可以为Python新手展示Python语言的强大特性和可以使用的包和技术。
首先,提供一个Python的速成课程,以防你已经忘记了所有东西。我们将复习基础知识,然后你可以决定是否完整阅读该章。接下来,将从脚本语言的角度来重新审视Python。通过尝试使用Python编写一些小脚本来访问你的系统。这可以展示Python让你所拥有的非常基本的能力。之后会讨论数据,这其实就是编程的一切——操纵数据。你会使用Python提供的标准库来完成一些示例。我们甚至会讨论数据库,这样就可以对它有一个基本了解。我们想让你了解并接触系统中可能会接触到的每个部分。
在前三章之后,将介绍桌面应用。尽管这些在Python中并不常用,但也是语言的一个特性。在你的整个Python程序员的生涯中它都非常有用。接下来将介绍Internet。这时,Python会充当数据通信工具。你将学习有关HTTP和Web的所有知识,以及网站在底层的工作方式,甚至会动手编写和使用API。很多新手程序员对API都很迷惑。我们希望在本章揭开它神秘的面纱。
在最后几章,将介绍Python中一些更高级的话题,例如,如何在更大的项目中使用Python、调试代码、创建测试模块、错误处理,以及创建自定义的异常和异常处理器。你在使用本书时、在将来查阅本书时、在使用Python编程时,都可以使用索引快速找到你想要的内容。
本书信息量很大,其中包含大量的工具和想法,可帮助你开始使用Python。我们希望你可以自己动手尝试,并且花时间在你感兴趣的概念和想法上做更多功课。在本书中,已经包含了大量实践练习来帮助你尝试新概念。在大多数章节中,还包含了一些挑战性问题,以帮助你巩固新知识。
使用本书须知
为了更好地使用本书,建议你所使用的现代计算机能够运行Python 3.3或更新版本,有一个能够舒适使用的好的文本编辑器,具有Internet连接(本书一些部分会使用),以及足够的耐心和求知欲。我们也建议你使用Internet搜索任何遇到的问题。专业程序员实际上并不是什么都会。他们通常只知道那些每天需要处理的问题,他们的大部分时间都花在搜索和追踪问题发生的原因上。不要觉得依赖Google解决问题是很让人沮丧的。有时,使用Google搜索问题的能力和你的编程能力是同样重要的。
在使用本书的示例和项目时,你可能需要源代码。示例的源文件可以通过Wrox网站www.wrox.com/go/pythonprojects和http://www.tupwk.com.cn/downpage下载。
源代码
在完成本书示例时,可以选择手动输入所有代码,也可以使用本书附带的源代码。本书中用到的所有源代码都可以从www.wrox.com下载。对于本书,源代码下载的具体位置在www.wrox.com/go/pythonprojects的Download Code选项卡下。
可以在www.wrox.com搜索本书的ISBN(本书的ISBN是978-1-118-90866-2)来寻找代码。www.wrox.com/dynamic/books/download.aspx上列出了当前所有Wrox书籍的完整代码下载列表。
www.wrox.com上的大部分代码是使用.ZIP、.RAR或适用于当前平台的类似压缩格式压缩的。下载之后,使用合适的解压缩工具解压即可。
勘误表
尽管我们已经尽了各种努力来保证文章或代码中不出现错误,但是错误总是难免的,如果你在本书中找到了错误,例如拼写错误或代码错误,请告诉我们,我们将非常感激。通过勘误表,可以让其他读者避免受挫,当然,这还有助于提供更高质量的信息。
要在网站上找到本书的勘误表,可以登录http://www.wrox.com,通过Search工具或书名列表查找本书,然后在本书的细目页面上,单击Book Errata链接。在这个页面上可以查看Wrox编辑已提交和粘贴的所有勘误项。完整的图书列表还包括每本书的勘误表,网址是www.wrox.com/misc-pages/ booklist.shtml。
如果在Book Errata页面上没有看到你找出的错误,请进入www.wrox.com/contact/ techsupport.shtml,填写表单,发电子邮件,我们就会检查你的信息,如果是正确的,就在本书的勘误表中粘贴一个消息,我们将在本书的后续版本中采用。
p2p.wrox.com
P2P邮件列表是为作者和读者之间的讨论而建立的。读者可以在p2p.wrox.com上加入P2P论坛。该论坛是一个基于Web的系统,用于传送与Wrox图书相关的信息和相关技术,与其他读者和技术用户交流。该论坛提供了订阅功能,当论坛上有新帖子时,会给你发送你选择的主题。Wrox作者、编辑和其他业界专家和读者都会在这个论坛上进行讨论。
在http://p2p.wrox.com上有许多不同的论坛,帮助读者阅读本书,在读者开发自己的应用程序时,也可以从这个论坛中获益。要加入这个论坛,必须执行下面的步骤:
(1) 进入http://p2p.wrox.com,单击Register链接。
(2) 阅读其内容,单击Agree按钮。
(3) 提供加入论坛所需的信息及愿意提供的可选信息,单击Submit按钮。
(4) 然后就可以收到一封电子邮件,其中的信息描述了如何验证账户,完成加入过程。
加入论坛后,就可以发送新信息,回应其他用户的帖子。可以随时在Web上阅读信息。如果希望某个论坛给自己发送新信息,可以在论坛列表中单击该论坛对应的Subscribe to this Forum图标。
对于如何使用Wrox P2P的更多信息,可阅读P2P FAQ,了解论坛软件的工作原理,以及许多针对P2P和Wrox图书的常见问题解答。要阅读FAQ,可以单击任意P2P页面上的FAQ链接。
