《程序员学Python》前言

裘宗燕(人民邮电出版社,2018.8)


本书是针对程序员或其他学过用过至少一种编程语言、有一些编程经验的人们(如学过计算机基础课程的大学生)的Python编程著作。本书假定读者对于计算机的基础概念、程序和编程,都有一定的理解,但是没用过Python。书中介绍了Python的基本特征,深入讨论了各方面的重要问题、高级机制和重要技术,目标是帮助读者深入理解Python语言,理解如何用好这一语言,理解如何用它写出真正能用的良好程序。

Python是目前非常热门的一种编程语言,有关Python编程和应用的书籍,虽不能说是汗牛充栋、铺天盖地,也是林林总总、选择很多。本书与其他书籍有什么不同呢?基于上面提出的基本目标,本书的特点主要体现在如下几个方面:

首先,根据对读者已有知识基础的考虑,书中对Python中与其他语言类似的基本编程机制的介绍相对精炼,将更多篇幅集中于各种反映了Python特点的特征及相关编程和应用技术方面。例如,书中前两章详细讨论了函数定义的嵌套结构和作用域规则,丰富的形参/实参机制和形实参匹配规则,高阶函数的概念和应用,迭代器和可迭代对象的概念和定义,lambda表达式(匿名函数)及其应用,标准组合对象的构造和使用,描述式的概念和应用等。还用较大的实例展示组合数据对象的应用和相关编程技术。

程序员学习Python不是为了写几个玩具程序,而是为了开发有用的系统。针对这种需求,本书深入讨论了许多与开发复杂和大型程序有关的问题,以及相关的Python特征和应用技术:包括程序的功能分解、信息局部化、模块化;Python函数定义、类定义和模块机制的使用;Python中面向对象机制的相关概念、结构和应用技术,以及一些特殊功能类的构造;程序的模块分解和管理,复杂模块结构的物理组织和导入技术等。

本书对Python语言中的各种高级机制和编程技术都有非常详细的介绍和讨论,如生成器函数的定义和使用,利用高阶函数的闭包技术,错误处理的概念和Python的异常处理功能及其应用,装饰器的概念、定义和应用,抽象基类、元类和各种高级面向对象机制和技术(属性操作、property和描述器等),异步程序的概念和Python最新版本引进的协程等异步编程机制及其应用等。书中还给出了许多应用实例。正确运用这些结构和技术,可能提高程序的模块化、可读性和易维护性。如果读者希望用Python开发复杂的应用系统,准确理解和掌握这些高级特性,可能就更加重要了。

人们常说Python语言简单,编写简单程序时好像确实如此。但实际上Python绝不简单,它也是一种很复杂的语言,其功能特征非常丰富,能支持多种编程风格,在几乎所有方面都能深度定制。要想用好Python,用它解决复杂问题,开发功能正确的、效率高的程序,需要很好地理解上面说明的许多高级概念和特征,还需要理解该语言的内在性质。本书的另一个特点就是深入分析了Python语言的各方面语义细节和重要性质。有关讨论随着各种语言特征的介绍散布全书,也有些基本问题集中在第3章专门讨论,那里特别关注了由引用语义带来的共享问题,由函数嵌套结构和高阶函数带来的复杂语义问题等。Python的强大功能也容易误用,容易编写出意义正确但效率低下,以致根本不能实用的程序。第3章特别讨论了效率问题,分析了一些情况,提出了一些设计原则和技术。

Python语言带有一个很大的、不断增长的标准库,包含数百个程序包。一些程序包是通用的,与应用领域无关,如提供访问底层系统的API,或支持程序开发与调试的功能;有些包是专用的,如支持互联网应用或图形用户界面等。有些书籍用很大篇幅介绍若干程序包,示例也围绕着一些程序包的应用。本书的考虑有所不同,这里集中关注Python语言本身的功能和特性。对于标准库,书中只涉及少量程序包,如若干核心的包(如sys、io、types等)或最常用的包(如math、random等),以及与某些语言功能关系密切、必须讨论的包(如asyncio等)。作者认为,学习一种语言,首先的也是最重要的,是全面准确地掌握这个语言的核心概念和重要性质。由于读者已有编程和使用编程语言的经验,理解了Python的基本特征和相关技术后,应该可以查阅有关文档,自己弄清有关的标准库功能。

总而言之,本书是一本全面介绍Python语言各方面特征和编程技术的著作,其内容涵盖了Python核心语言的所有方面,讨论的内容足以支持读者使用Python去开发复杂的大型Python程序。当然,为了应对具体的应用领域,读者可能还应该考察一些针对其目标应用领域的标准库包,或者第三方程序包,以更方便地完成自己的工作。

由于讨论如此宽泛和丰富,本书的内容绝不简单,不是几天就能读完的简单教程。阅读本书需要一些时间,还需要编程实践。严肃地学习任何一种新编程语言时,情况也都差不多。由于内容比较全面,本书还可以作为Python程序员手头的参考手册,供人们在用Python做应用开发时参考。附录A是一个简明的Python手册,总结了Python语言的各方面特征,并索引到书中有关章节,供读者查阅。

在撰写本书的过程中,作者最主要的参考材料就是Python的标准文档(语言手册和标准库手册),还参考了Mark Lutz的两本著作(见最后的参考文献)和互联网上的一些材料、报告和讨论(如www.stackoverflow.com网站的讨论),在此一并向相关材料和书籍的作者表示感谢。人民邮电出版社的陈冀康编辑认真审阅了本书的草稿,发现了一些错误和不足之处,作者对其认真工作表示感谢。此外,作者也希望得到读者的反馈意见和建议,先在这里表示感谢。本书将在http://www.math.pku.edu.cn/teachers/qiuzy/books.htm有一个页面,维持一个勘误表和一些相关信息,供读者查看。

裘宗燕
2018年3月,北京


2016.7