前言 一种程序设计语言日渐粲然,让许多红极一时的程序设计语言黯然失色,得到人们的空前青睐。这种程序设计语言就是Python。 一 Python之所以能够冉冉升起,在于其鲜明的特色。通常人们的看法是Python简单、易学。它虽然是用C语言写的,但是它摈弃了C语言中“任性不羁”的指针,降低了学习和应用的难度。或者说是,Python明确、优雅。它的代码描述具有伪代码风格,使人容易理解;其强制缩进的规则,使得代码具有极佳的可读性。 不错,这些都是Python的优势。不过却仅仅是皮毛上的优势。Python最关键的特点在于它集命令式编程、函数式编程及面向对象编程的优势于一身,形成了一套独特的语法体系。然而,它对于这些程序设计模式结合,不是简单拼凑,而是有机融合,从而形成1+1+1>>3的优势,把各种变更成模式的优点发挥得淋漓尽致。这不仅极大地方便了开发者,更重要的是这样的设计思想,对于计算机及其相关专业的学习者,具有深刻的启迪意义。 面对Python这样的发展景象,首要是要把Python的一套充满新意的语言体系,正确地、严谨地奉献给学习者,这就是本书写作的初衷。 二 本书的编写动机是正本清源,力求从基本理论出发,对Python的语法给出清晰的概念和解释,以此为基础快速地将读者带入Python应用开发领域。经过反复推敲,编者将本书按照三篇共6章编写。 启蒙篇(第1章),核心内容是讲对象和变量。它们就像是爱情剧中作为主角的一对情侣,没有它们,不要说爱情大戏,就是小戏也会戏不成戏。任何程序设计语言所编写的程序都是这样,Python也不例外。但是,Python的这两个演员与其他程序设计语言有极大的不同。不了解这一点,就等于没有掌握好这门程序设计语言,就迈进不了真正的Python 世界的大门。除此之外,作为启蒙,这一章还介绍了一些最基本的Python语法知识: 运算符、表达式、数据的输入输出、函数与模块等,为后面的学习打下了良好的基础。 核心篇(第2~4章),介绍Python结构化编程、Python函数式编程和Python面向对象编程。这就是前面讨论的Python的第一大特征。只有掌握好这三章中的内容,才能称得上成为了Python人。 扩展篇(第5、6章),介绍Python容器操作和应用开发。著名计算机科学家N.沃斯有一本名著《数据结构+算法=程序》,他把数据结构放在了算法之前,说明了数据结构的重要性。这个思想对程序开发,乃至整个计算机科学产生了极大影响。本书第5章以“Python容器操作”为题,把序列(字符串、列表、元组)、集合、字典和文件作为广义容器来讨论。其内容还算不上是现代数据结构的内容,只能说是实现现代数据结构的部件。因为,本书以介绍Python语法为主体,所以就把这部分内容当作扩展部分来介绍。本书的第6章介绍基于库(标准库或第三方库)进行软件开发的基本思路。编者认为,任何项目的软件开发,第一步都是弄清需求。而弄清需求就需要通晓项目的专业领域知识。在此基础上,基于库中的模块就非常简单了。并且不主张,初学Python就做大数据分析等课题,要做课题,还应从基础的数据库开发、网络操作、图形用户界面入手。 Python博采众长,其独特的语法体系吸引着同行们的关注,其自由、开放的亲和力,更令有才华者感到这里是他们可以出成果的地方,纷纷成为它的盟军,开发出了极为丰富的资源库——第三方库,又吸引了更多用户,形成了良性循环。特别是它赶上了计算机网络以及大数据、人工智能的浪潮,不少人用它开发出了夺人眼球的时髦平台,也成为它的一个优势。作为一门打基础的课程,重点就要放到打基础上。对于应用开发,可以举一点简单的内容,并且要让初学者知道,做项目,首先要弄清项目所涉及领域的知识,知道如何进行需求分析。至于一个开发平台的使用,只要把Python的基础知识和技能掌握好了,并不困难。 三 教材是学习者学习环境的重要组成部分。为向学习者提供更好的学习环境,本书除了在正文中准确地介绍有关概念、方法,选择经典例题外,还配有习题,供学习者对学习成果进行测试。习题的题型有选择题、判断题、填空题、简答题、代码分析题、实践题和资料收集题。 除此之外,本书还在正文的有关部分插入了一些二维码,主要分为两种类型: 一种是有关知识的扩展和深化内容;另一种是在纸质书中不便或条件不允许表示的内容,如彩色图片。为了便于查阅,书后的附录给出了二维码目录。 四 本书就要出版了。它的出版,使本人在程序设计教学改革工作中跨上了一个新台阶。本人衷心希望得到有关专家和读者的建议与批评,也希望能多结交一些志同道合者,以期本书能在矫正社会上存在的对Python的错误认识中发挥更大作用。 在本书出版之际,特别感谢清华大学出版社白立军等编辑在出版工作中付出的艰辛努力。此外,还要感谢我的外孙女,远在牛津大学的姚子萱为全书进行的程序校验工作。 编者2023年6月于锡蠡溪苑