前言

    本书第 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 版本控制的简明教程。

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