图书前言

前言

Python由荷兰的吉多·范罗苏姆(Guido van Rossum)在1989年设计开发,于1991年公开发布。在设计之初,Python语言被定位为一门解释型语言,语法优雅、简单易学、开源、拥有易于扩充开发的第三方扩展库。正是这样的目标定位,Python语言发布之后受到广大学生、教师、科研工作者、软件开发人员等社会各界人士的欢迎。卡耐基·梅隆大学、麻省理工学院、加州大学伯克利分校、哈佛大学等院校已经将Python语言作为大学生程序设计的入门教学语言。因为Python简单易学,具有丰富的第三方扩展库,用户可以将精力和时间放在自己关注的业务逻辑上,而不用拘泥于开发语言的选择与学习。Python语言已经被广泛地应用于网站开发、数据统计与分析、移动终端开发、科学计算与可视化、图形图像处理、大数据处理、人工智能、游戏开发等领域。自2004年以来,Python的使用率呈线性增长。根据TIOBE网站的统计,Python在编程语言流行排行榜中有逐年上升的趋势,截至2022年1月,Python语言已经5次被TIOBE网站评为年度最佳编程语言。在根据Google搜索做出的PYPL(http://pypl.github.io/PYPL.html)排名中早已上升到第一的位置。

经过十几年的发展,Python语言已经发展到3.x版本,3.x版本特意地与2.x版本不兼容,彻底解决了字符编码等问题。尽管早期的一些第三方扩展库不兼容3.x版本,但随着开发者的努力,越来越多的扩展库被移植到了3.x版本,相信3.x版本必将成为未来的发展趋势和主流。因此,本书以Python 3.x为开发版本,不再关注2.x版本。

本书选择Python作为编程教学语言,尝试改变C语言晦涩难懂、编程语言与专业应用结合较困难的问题。本书1~7章通过绘图等示例降低学习难度,让学生在轻松愉快的氛围中学习编程;8~11章贴近实际业务,以实战案例增强其趣味性和实用性。

本书在泛雅教学平台提供了相应的学习资源。课后作业可以帮助学生理解、巩固所学知识;课后测验可以帮助学生了解自己的学习效果;大家也可以在“讨论”模块就关心的问题进行探讨。教学平台中的“资料”模块准备了参考图书和开发IDE工具可供下载。各章节均配有相应的视频教程,在计算机端浏览器登录http://mooc1.chaoxing.com/course/96566070.html,或手机端扫描书中的二维码即可自主学习。

本书各章节中加入“注意”“提示”“拓展”等内容,以引起读者的注意及拓展知识面。

本书在排版体例上,代码的左侧标有行号,以方便读者阅读分析代码。图书最后附有参考文献,其中包含对学习非常有帮助的参考资源,大家可以参考学习。

本书内容涵盖了入门编程语言绝大部分知识体系,因此本书适合高等院校相关专业作为教材使用。

本书中所有代码及PPT都可以到清华大学出版社网站下载,以方便读者教学或学习,其他的学习资源可以从泛雅学习平台获取,登录方式见上文。

本书的组织结构如下。

第1章首先简单介绍了编程语言,接着对Python语言进行了概括性的介绍,然后介绍了Python的安装方法,如何快速入门以及Turtle库的使用。

第2章介绍了数据及其运算。首先介绍了基本数据类型及其运算,最后介绍了字符串。

第3章介绍了程序的结构,包括分支结构、循环结构。

第4章介绍了函数相关的内容,包括函数的定义、函数的调用过程、参数的默认值、可变长参数、变量的作用域、递归函数、匿名函数等,最后介绍了datetime和random模块。

第5章介绍了文件操作,包括文件的基本操作(打开、关闭、读取、写入、添加、指针)、上下文、文件和文件夹的操作,同时介绍了如何根据文件属性判断文件的原始性及网站是否被入侵。

第6章介绍了面向对象编程技术,包括类的定义、类的属性和方法、构造函数与析构函数、类的继承、多态等。

第7章介绍了异常处理,包括捕获并处理异常,及创建自定义异常类等。

第8章介绍了组合数据类型,包括列表、元组、字典、集合。

第9章介绍了Python中pip工具和Pyinstaller库的使用。

第10章介绍了Python图像处理。首先介绍了Image、ImageDraw、ImageFont、ImageFilter、ImageEnhance等模块,然后介绍了PIL在安全领域的应用,包括生成验证码图片、给图片加水印、生成二维码等内容。

第11章介绍了Python如何抓取网络数据。首先介绍了网络基础知识,接着介绍了使用requests抓取网络数据,使用XPath定位网页节点的方法,网络数据的抓取并保存为JSON、CSV格式,最后介绍了使用中文分词、词云分析论坛舆情热点。

本书在编写和教学过程中,滕萍教授、杨虹教授及纪芳老师提出了很好的建议和意见,在此表示深深的感谢。

本书在编写过程中参考了大量的相关资料,这些资料已经列入书后的参考文献,这里对这些资料的作者表示深深的感谢。

由于编者水平有限,加之时间仓促,Python版本的更新等原因,书中难免存在不足,恳请各位读者批评指正,以便进一步改正与完善。

编著者2022年8月