附录 B 文本编辑器和 IDE
程序员会花大量时间编写、阅读和编辑代码,因此必须使用文本编辑器或 IDE(integrated development environment,集成开发环境)尽可能提高效率。好的编辑器会做些简单的工作(如高亮代码结构),帮助你在编程期间发现常见的 bug,但又不会做得太多,以免打断你的思路。编辑器还提供了一些很有用的功能,如自动缩进、标识出合适的行长以及提供常用操作的快捷键。
IDE 是提供了大量工具(如交互式调试器和代码检视器)的文本编辑器。在你输入代码时,它会进行检查,力图明白你创建的项目是什么样的。例如,当你输入函数名时,IDE 可能会显示该函数接受的所有实参。在一切顺利且你明白显示的内容时,这可能很有帮助,但对初学者来说,这可能也是极大的负担,而且在不确定代码为什么不能在 IDE 中工作时,很难进行故障排除。
当前,文本编辑器和 IDE 之间的界线已模糊不清。大多数流行的编辑器具备一些以前只有 IDE 才有的特性,而大多数 IDE 可配置成以轻量级模式运行,以免分散用户的注意力,同时让用户能够根据需要使用高级特性。
如果你已经安装了自己喜欢的编辑器或 IDE,并将其配置为使用系统中安装的较新 Python 版本,那么建议你继续使用该开发环境。探索不同的编辑器可能很有趣,但在学习新语言时应避免这样做。
如果你还没有安装编辑器或 IDE,推荐你使用 VS Code,原因如下。
- 它是免费的,并且以开源许可的方式发布。
- 在所有主流操作系统中都可安装它。
- 它对初学者很友好,同时功能足够强大,很多专业程序员也将其作为主编辑器。
- 它能找出系统安装的 Python 版本,因此通常无须做任何配置就能运行你的第一个程序。
- 它包含集成终端,让代码和输出出现在同一个窗口中。
- 有一个 Python 扩展让你能够使用它来高效地编写和维护 Python 代码。
- 它是高度可定制的,因此你可根据自己的工作习惯对其进行调整。
在本附录中,你将学习如何配置 VS Code 才能得心应手地工作。你还将学习一些快捷键,以提高工作效率。对编程来说,打字速度快并没有很多人想得那么重要,熟悉编辑器并知道如何高效使用它反而大有裨益。
然而,VS Code 并非适合所有人。如果 VS Code 在你的系统中不太好用,或者让你在工作时难以集中注意力,有很多其他的编辑器可供选择,它们对你来说可能更有吸引力。因此,本附录还将简要地描述其他一些值得你考虑的编辑器和 IDE。
B.1 高效地使用 VS Code
在第 1 章中,你安装了 VS Code,并且添加了 Python 扩展。本节将介绍其他一些配置,以及让你能够高效工作的快捷键。
B.1.1 配置 VS Code
修改 VS Code 默认配置的方式有好几种。有的修改是通过用户界面完成的,还有的修改是在配置文件中完成的。一些修改带来的影响是全局性的,另一些修改只影响配置文件所在文件夹中的文件。
如果文件夹 python_work 中有一个配置文件,其中的设置将只影响该文件夹(及其子文件夹)中的文件。这样挺好,因为这意味着可指定覆盖全局设置的项目专用设置。
- 使用制表符和空格
如果在代码中混用制表符和空格,可能导致程序出现难以调试的问题。安装 Python 扩展后,如果你在 .py 文件中按 Tab 键,VS Code 将插入 4 个空格。因此,在安装了 Python 扩展的情况下,如果只使用自己编写的代码,就不会出现与制表符和空格相关的问题。
然而,你可能没有正确地配置 VS Code。此外,你碰到的文件可能只包含制表符,也可能同时包含制表符和空格。如果你怀疑存在与制表符和空格相关的问题,可单击 VS Code 窗口底部的状态栏中的 Spaces(空格)或 Tab Size(制表符长度)。这将打开一个下拉列表,让你能够在使用制表符缩进和使用空格缩进之间切换。你还可以修改默认的缩进程度,以及将文件中所有的缩进都转换为制表符或空格。
在查看代码时,如果不确定缩进使用的是空格还是制表符,可以选中代码,这将显示原本不可见的空白字符:每个空格都显示为圆点,每个制表符都显示为箭头。
注意:对编程而言,空格优于制表符,因为处理代码文件的所有工具都能够准确地解读空格。制表符则可能会被不同的工具解读为不同的宽度,进而引发可能很难诊断的错误。
- 变更颜色主题
VS Code 默认使用一种深色主题。如果要更改颜色主题,可选择菜单 File(文件,macOS 中为 Code)▶ Preferences(首选项)▶ Color Theme(颜色主题),这将打开一个下拉列表,让你能够选择适合自己的颜色主题。
- 设置行长标志
大多数编辑器允许你设置视觉线索(通常是竖线),指出代码行应在哪里结束。Python 社区的约定是行长不要超过 79 个字符。
要设置这种标志,可选择菜单 File(文件)▶ Preferences(首选项)▶ Settings(设置)。在打开的对话框中输入 rulers,你将看到设置 Editor: Rulers。单击链接 Edit in settings.json(在 settings.json 中编辑),并在打开的文件中添加如下 editor.rulers 设置:
settings.json
"editor.rulers": [
80,
]
这将在编辑窗口中的第 80 个字符处添加一条竖线。也可添加多条竖线,如果要在第 120 个字符处再添加一条竖线,可将 editor.rulers 设置为 [80, 120]。如果没有看到这些竖线,请确认保存了设置文件。在一些系统中,可能还需退出并重新打开 VS Code 才能让修改生效。
- 简化输出
默认情况下,VS Code 在一个内嵌的终端窗口中显示程序的输出。输出包含用来运行文件的命令。这在很多情况下是不错的做法,但对 Python 初学者来说,这可能会分散注意力。
为了简化输出,关闭 VS Code 中打开的所有选项卡,并退出 VS Code。然后重启 VS Code,并打开当前要处理的 Python 文件所在的文件夹,它可能是 hello_world.py 所在的文件夹 python_work。
单击 Run/Debug(运行和调试)图标(由一个三角形和小虫子组成),再单击 Create a launch.json File(创建 launch.json 文件),并在出现的选项中选择 Python。在打开的文件 launch.json 中,做如下修改:
launch.json
{
—snip—
"configurations": [
{
—snip—
"console": "internalConsole",
"justMyCode": true
}
]
}
这里将 console 设置从 integratedTerminal 改为 internalConsole。保存这个设置文件,打开一个 .py 文件(如 hello_world.py),并按 Ctrl + F5 运行它。在 VS Code 的输出窗口中,单击 Debug Console(调试控制台)——如果还没有选择它。你将只能看到程序的输出,每当你运行程序时,输出都将刷新。
注意:调试控制台是只读的,不适用于使用了函数 input() 的文件(我们在第 7 章开始使用这个函数)。在需要运行使用了函数 input() 的程序时,既可以将设置 console 恢复为默认值 integratedTerminal,也可以像 1.5 节介绍的那样,从终端窗口运行它们。
- 探索其他定制方式
你能以众多不同的方式定制 VS Code,以提高工作效率。要探索可定制哪些方面,可选择菜单 File(文件)▶ Preferences(首选项)▶ Settings(设置),将出现一个标题为 Commonly Used(常用)的列表,单击其中的子标题可查看一些定制 VS Code 的常用方式。花些时间进行研究,看看是否有让 VS Code 更好地替你工作的设置,但不要沉迷于配置编辑器,以免影响你学习使用 Python。
B.1.2 VS Code 快捷键
对于编写和维护代码时需要执行的常见任务,所有编辑器和 IDE 都提供了高效执行它们的途径。例如,可轻松地缩进单行代码或整个代码块,还可轻松地在文件中上下移动代码块。
快捷键非常多,这里无法全面介绍,因此只介绍执行几种任务的快捷键,它们在你刚学习编写 Python 程序时可能很有用。如果你使用的是其他编辑器(不是 VS Code),务必了解如何在你选择的编辑器中高效地完成这些任务。
- 缩进和取消缩进代码块
要缩进代码块,可先选中它,再按 Ctrl + ](macOS 系统中为 Command + ])。要取消代码块缩进块,可先选中它,再按 Ctrl + [(macOS 系统中为 Command + [)。
- 将代码块注释掉
要暂时禁用代码块,可将其注释掉,让 Python 忽略它。为此,可先选中代码块,再按 Ctrl + (macOS 系统中为 Command + )。这将在行首添加井号(#),并保持缩进程度不变,以指出这不是常规注释。要对代码块取消注释,可先选中它,再按前述快捷键。
- 上下移动代码块
在很复杂的程序中,你有时可能想要向上或向下移动代码块。为此,可先选中要移动的代码块,再按 Alt + 上方向键(macOS 系统中为 Option + 上方向键)向上移动,或按 Alt + 下方向键(macOS 系统中为 Option + 下方向键)向下移动。
如果要移动的是单行代码,可在该行的任意位置单击鼠标并移动,而不用选中整行。
- 隐藏资源管理器
VS Code 中的集成资源管理器虽然提供了极大的便利,但在你编写代码时可能会分散你的注意力,而且在屏幕较小时会浪费宝贵的空间。要在显示和隐藏资源管理器之间切换,可按 Ctrl + B(macOS 系统中为 Command + B)。
- 了解其他快捷键
想在编辑环境中高效地工作,需要多练习和多留心。在学习编写代码时,要留意着哪些任务是你反复执行的。在编辑器中执行的任何操作都可能有快捷键,在通过选择菜单来执行编辑任务时,请留意执行这些任务的快捷键。如果你频繁地在使用键盘和使用鼠标之间切换,请留意导航快捷键,这样可避免频繁地使用鼠标。
要查看 VS Code 中的所有快捷键,可选择菜单 File(文件)▶ Preferences(首选项)▶ Keyboard Shortcuts(键盘快捷方式),再使用搜索栏来查找特定的快捷键,或在列表中滚动查找可以提高工作效率的快捷键。
别忘了,最好专注于你的代码,不要在当前使用的工具上花费太多时间。
B.2 其他文本编辑器和 IDE
你肯定听说过众多其他的文本编辑器,或者看到有人使用这些编辑器。对于这些编辑器,通常可像定制 VS Code 那样进行配置。下面介绍你可能听说过的一些文本编辑器。
B.2.1 IDLE
IDLE 是 Python 自带的文本编辑器。相比于其他更现代的编辑器,它不那么直观,但有些基础教程可能会提到它,因此你可能想试一试。
B.2.2 Geany
Geany 是一款简单的编辑器,可在单独的终端窗口中显示所有输出,这有助于你逐渐习惯使用终端。Geany 的界面非常简单,但功能强大,很多经验丰富的程序员也选择使用它。
如果你觉得 VS Code 的界面太花哨、特性太多,可考虑使用 Geany。
B.2.3 Sublime Text
Sublime Text 也是一款极简编辑器,如果你觉得 VS Code 的界面过于花哨,也可考虑使用它。Sublime Text 有非常整洁的界面,并且以擅长处理超大型文件著称。这款编辑器不会带来任何干扰,让你能够专注于当前编写的代码。
Sublime Text 可无限期地免费试用,但不属于自由或开源软件。如果你喜欢它,并且承担得起购买完整许可证的费用,那就购买它吧。一次购买即可终身使用,不需要像订阅那样定期支付费用。
B.2.4 Emacs 和 Vim
Emacs 和 Vim 是两款流行的编辑器,深受众多经验丰富的程序员的喜爱,因为用户在使用它们时,双手根本不用离开键盘。因此,学会使用这些编辑器后,编写、阅读和编辑代码的效率将获得极大的提高。不过,这也意味着学会使用它们的难度极大。大多数 Linux 和 macOS 计算机自带 Vim,而且 Emacs 和 Vim 都可完全在终端中运行,因此它们常被用来通过远程终端会话在服务器上编写代码。
程序员通常会推荐你试一试它们,但很多编程老手忘了编程新手要学习的东西实在太多了。知道这些编辑器是有益的,但请先使用对用户友好的编辑器,以便专注于学习编程,而不是花费时间学习如何使用编辑器。等你能够熟练地编写和编辑代码后,再去使用这些编辑器吧。
B.2.5 PyCharm
PyCharm 是一款深受 Python 程序员欢迎的 IDE,因为它是专门为使用 Python 编程而开发的。完整版需要付费订阅,但很多开发人员觉得免费的社区版(PyCharm Community Edition)也很有用。
如果你决定使用 PyCharm,务必对这一点心中有数:默认情况下,它会为每个项目搭建一个隔离环境。这通常是一件好事,但如果你不知道它为你做了什么,可能会发现它的有些行为出乎意料。
B.2.6 Jupyter Notebook
Jupyter Notebook 不属于传统的文本编辑器或 IDE,而是一款主要由块(block)组成的 Web 应用程序。每个块都要么是代码块,要么是文本块,后者采用 Markdown 格式,让你能够设置简单的文本格式。
最初开发时,Jupyter Notebook 旨在支持在科学应用程序中使用 Python,但经过不断的扩展,它在其他很多情形下也变得很有用。你不仅可以在 .py 文件中添加注释,还可以编写带简单格式的文本,如标题、带项目符号的列表以及在不同代码片段之间导航的超链接。每个代码块都可独立地运行,让你能够测试程序的很小一部分或同时运行所有的代码块。每个代码块都有独立的输出区域,可根据需要显示或隐藏。
在刚接触 Jupyter Notebook 时,其不同单元格(cell)之间的交互可能会令人迷惑。如果你在一个单元格中定义了一个函数,那么它在其他单元格中也可使用。这在大多数情况下是有益的,但如果 Notebook 很长,而你又对 Notebook 环境的工作原理没有全面的认识,就会感到迷惑。
如果你使用 Python 进行科学编程或以数据为核心的编程,几乎肯定会用到 Jupyter Notebook。