Python编程:从入门到实践(第2版)
上QQ阅读APP看书,第一时间看更新

前言

本书第 1 版出版后反响强烈,被翻译成了8 种语言。我收到了众多读者的来信和电子邮件,有小到10 岁的孩童,还有利用闲暇学习编程的退休人员。有一些初中、高中和大学用其作为教材,有使用高级教材的学生将其作为补充材料,还有人通过阅读它来提高工作技能或开发自己的项目。总而言之,第1 版的广泛用途完全符合我最初的预期。

第 2 版的编写过程从始至终都令人愉悦。Python 虽是一门成熟的语言,但也像其他语言一样在不断发展。我对本书的修订目标是更精练、更简单易懂。现在已经没有任何理由再学习 Python 2 了,因此第2 版只介绍 Python 3。很多 Python 包安装起来比以前容易,因此安装说明也更加简明。我新增了一些会对读者有帮助的主题;更新了部分章节,以反映如何利用 Python 中的新方式更简单地完成任务;澄清了第 1 版中对 Python 语言的某些细节描述得不太准确的地方。所有项目都做了全面修订,采用得到良好维护的流行库,让你能够充满信心地用它们来开发自己的项目。

下面概述一下第 2 版所做的具体修订。

▲ 第 1 章简化了 Python 安装流程,适用于所有主流操作系统。现在我推荐使用文本编辑器 Sublime Text,它深受初学者和专业程序员的欢迎,在各种操作系统上都能很好地运行。

▲ 第 2 章更准确地描述了 Python 变量的实现方式。将变量描述为指向值的标签,让读者能够更好地理解 Python 变量的行为。本书使用 Python 3.6 引入的f 字符串,该方法使得在字符串中使用变量值简单许多。Python 3.6 还引入了使用下划线来表示大数的方式(如1_000_000)。第1 版把对多变量赋值的介绍放在一个项目中,而第2 版则将其推广并移到了第2 章,旨在惠及所有读者。最后,这一章介绍了Python 里一种清晰的常量表示法。

▲ 第 6 章新增了介绍方法 get() 的内容。get() 从字典中获取值,并在指定的键不存在时返回默认值。

▲ 第 12 章~第 14 章的“外星人入侵”项目现在完全是基于类的。游戏本身也是类,不再是一系列函数。这极大地简化了游戏的总体结构,大大地减少了函数调用和必须提供的参数。阅读过第 1 版的读者一定会对这样的简化欣赏有加。对于所有操作系统,现在都只需一个命令就能安装 Pygame。此外,运行该游戏时,可在全屏模式和窗口模式之间选择。

▲ 数据可视化项目中的 Matplotlib 安装方法简化了,无论读者使用的是哪种操作系统。使用 Matplotlib 的可视化调用的是函数 subplots(),让项目扩展起来更容易。

▲ 第 15 章的掷骰子项目使用了 Plotly。这个可视化库得到了妥善的维护,语法清晰美观,支持对输出进行全面定制。

▲ 第 16 章的天气项目使用了来自美国国家海洋与大气管理局的数据。

▲ 第 17 章不再使用 Pygal 来可视化 GitHub 的Python 开源项目,转而使用 Plotly。

▲ 第 18 章~第 20 章使用新版的 Django 创建“学习笔记”项目,并使用新版 Bootstrap 设置样式。使用 django-heroku 简化了将项目部署到Heroku 的流程,并且转而使用环境变量,而非修改文件 settings.py。这种方法更简单,更接近专业程序员部署 Django 项目的方法。

▲ 附录 A 做了全面修订,推荐读者采用最佳的 Python 安装方法。附录 B 提供了详尽的 Sublime Text 安装说明,并简要介绍了大部分主流文本编辑器和IDE。附录C 引导读者访问更新、更流行的在线资源以寻求帮助。附录D 提供了Git 版本控制的简明教程。

感谢购买和阅读本书!如果有任何反馈或问题,请务必与我联系。

致谢

如果没有 No Starch Press 出色专业人士的帮助,本书根本不可能付梓。是 Bill Pollock 邀请我编写这样一本入门书,深深感谢他给予我这样的机会。Tyler Ortman 在我编写本书的早期帮助我理清了思路。Liz Chadwick 和 Leslie Shen 详细阅读了每一章,提出了宝贵的反馈意见,而 Anne Marie Walker 助我把本书的很多内容写得更加清晰。Riley Hoffman 回答了我就装订过程提出的每个问题,耐心地将我的作品变成了漂亮的图书。

这里要感谢技术审阅 Kenneth Love。我与 Kenneth 相识于一次 PyCon 年度大会,他对 Python 和 Python 社区充满热情,一直是我获取专业灵感的源泉。Kenneth 不仅检查了本书介绍的知识是否正确,在审阅中还始终抱着这样一个目的:让编程初学者对Python 语言和编程获得扎实的认 识。不过,倘若本书有任何不准确的地方,责任完全在我。

感谢我的父亲在我很小的时候就教我编程,一点儿也不担心我破坏他的设备。感谢妻子 Erin 在我编写本书期间一如既往的鼓励和支持。还要感谢儿子 Ever,他的好奇心每天都会给我带来灵感。