附录 B:文本编辑器和 IDE

程序员需要花费大量时间编写、阅读和编辑代码,因此使用文本编辑器或集成开发环境(IDE)尽可能提高工作效率至关重要。一个好的编辑器可以完成一些简单的任务,比如高亮显示代码的结构,这样你就可以在工作中捕捉到常见的错误。但它不会做得太多,以免分散你的注意力。编辑器还有一些有用的功能,比如自动缩进、显示适当行长的标记以及常用操作的键盘快捷键。

集成开发环境是一个文本编辑器,其中包含许多其他工具,如交互式调试器和代码自省。集成开发环境会在你输入代码时检查你的代码,并尝试了解你正在构建的项目。例如,当你开始输入一个函数的名称时,集成开发环境可能会向你显示该函数接受的所有参数。当一切正常并且你能理解所看到的内容时,这种行为会非常有用。但对于初学者来说,这也会让人不知所措,而且当你不确定为什么代码在集成开发环境中无法运行时,也很难排除故障。

如今,文本编辑器和集成开发环境之间的界限已经模糊。大多数流行的编辑器都具有一些过去集成开发环境独有的功能。同样,大多数集成开发环境都可以配置为在较轻的模式下运行,这种模式在你工作时不容易分心,但在需要时又能让你使用更高级的功能。

如果您已经安装了自己喜欢的编辑器或集成开发环境,并且已经将其配置为可与系统中安装的最新 Python 版本配合使用,那么我鼓励您坚持使用自己已经熟悉的编辑器或集成开发环境。探索不同的编辑器可能很有趣,但这也是避免学习新语言的一种方法。

如果你还没有安装编辑器或集成开发环境,我推荐你使用 VS Code,原因有很多:

  • 它是免费的,而且是根据开源许可证发布的。

  • 它可以安装在所有主流操作系统上。

  • 它对初学者友好,但也足够强大,许多专业程序员都将其作为自己的主要编辑器。

  • 它能找到你已安装的 Python 版本,通常不需要任何配置就能运行你的第一个程序。

  • 它有一个集成的终端,因此你的输出与代码显示在同一个窗口中。

  • 它还提供一个 Python 扩展,使编辑器在编写和维护 Python 代码时非常高效。它可高度自定义,因此你可以根据自己处理代码的方式进行调整。

在本附录中,你将学习如何开始配置 VS Code,以便它能很好地为你工作。你还将学到一些快捷方式,让你的工作更有效率。在编程过程中,打字速度快并不像很多人想象的那么重要,但了解编辑器并知道如何高效地使用它却很有帮助。

综上所述,VS Code 并不适合所有人。如果由于某些原因它在你的系统上运行不畅,或者如果它在你工作时分散了你的注意力,那么还有其他一些编辑器可能会更吸引你。本附录简要介绍了你应该考虑的一些其他编辑器和集成开发环境。

使用 VS Code 高效工作

在第 1 章中,您安装了 VS Code 并添加了 Python 扩展。本节将向你展示一些可以进行的进一步配置,以及高效处理代码的快捷方式。

配置 VS 代码

有几种方法可以更改 VS Code 的默认配置设置。有些更改可以通过界面进行,有些则需要更改配置文件。这些更改有时会对你在 VS Code 中的所有操作生效,而有些更改则只影响包含配置文件的文件夹中的文件。

例如,如果您在 python_work 文件夹中有一个配置文件,那么这些设置只会影响该文件夹(及其子文件夹)中的文件。这是一个很好的功能,因为它意味着你可以让特定于项目的设置覆盖全局设置。

使用 tabs 和空格

如果在代码中混合使用制表符和空格,可能会导致程序出现难以诊断的问题。在安装了 Python 扩展的 .py 文件中工作时,VS 代码会在您按下 TAB 键时插入四个空格。如果您只编写自己的代码,并且安装了 Python 扩展,您可能永远不会遇到制表符和空格的问题。

但是,您的 VS Code 安装配置可能不正确。此外,在某些时候,您可能会处理一个只有制表符或制表符与空格混合的文件。如果怀疑制表符和空格有问题,请查看 VS 代码窗口底部的状态栏,然后单击 "空格 "或 "制表符大小"。这时会出现一个下拉菜单,让你在使用制表符和使用空格之间进行切换。你还可以更改默认缩进级别,并将文件中的所有缩进转换为制表符或空格。

如果你在查看一些代码时不确定缩进是由制表符还是空格组成,可以高亮几行代码。这样,不可见的空白字符就会显现出来。每个空格将显示为一个点,而每个制表符将显示为一个箭头。

在编程中,空格比制表符更受欢迎,因为空格可以被所有处理代码文件的工具明确解释。不同工具对制表符宽度的解释可能不同,从而导致极难诊断的错误。

更改颜色主题

VS Code 默认使用深色主题。如果你想更改,请单击 "文件"(macOS 菜单栏中的 "代码"),然后单击 "首选项 "并选择 "颜色主题"。这时会出现一个下拉列表,让你选择适合自己的主题。

设置行长指示器

大多数编辑器都允许您设置一个视觉提示,通常是一条垂直线,以显示您的行应该在哪里结束。在 Python 社区,约定俗成的做法是将行数限制在 79 个字符或更少。

要设置此功能,请单击 "代码",然后单击 "首选项",再选择 "设置"。在出现的对话框中,输入标尺。你会看到一个编辑器设置: 尺子;单击 settings.json 中标有 "编辑 "的链接。在出现的文件中,将以下内容添加到 editor.rulers 设置中:

settings.json
"editor.rulers": [
    80,
]

这将在编辑窗口的 80 字符位置添加一条竖线。竖线可以不止一条;例如,如果想在 120 字符处增加一条竖线,设置值将是 [80, 120]。如果看不到竖线,请确保保存了设置文件;在某些系统上,可能还需要退出并重新打开 VS Code 才能使更改生效。

简化输出

默认情况下,VS Code 会在嵌入式终端窗口中显示程序的输出。该输出包括用于运行文件的命令。在许多情况下,这都是理想的选择,但在初学 Python 时,这可能会分散你的注意力。

为了简化输出,请关闭 VS Code 中打开的所有选项卡,然后退出 VS Code。再次启动 VS 代码,打开包含您正在处理的 Python 文件的文件夹;可以是保存 hello_world.py 的 python_work 文件夹。

单击运行/调试图标(看起来像一个带小错误的三角形),然后单击创建 launch.json 文件。在出现的提示中选择 Python 选项。在打开的 launch.json 文件中,进行以下更改:

launch.json
{
    --snip--
    "configurations": [
        {
            --snip--
            "console": "internalConsole",
            "justMyCode": true
        }
    ]
}

在这里,我们要将控制台设置从 integratedTerminal 更改为 internalConsole。保存设置文件后,打开一个 .py 文件,如 hello_world.py,然后按 CTRL-F5 运行它。在 VS 代码的输出窗格中,如果尚未选择调试控制台,请单击调试控制台。你应该只看到程序的输出,而且每次运行程序时输出都会刷新。

调试控制台是只读的。它不适用于使用 input() 函数的文件,你将在第 7 章开始使用该函数。当需要运行这些程序时,可以将控制台设置改回默认的集成终端,或者在单独的终端窗口中运行这些程序,如第 11 页的 "从终端运行 Python 程序" 所述。

探索更多自定义功能

您可以通过多种方式自定义 VS Code,以帮助提高工作效率。要开始探索可用的自定义功能,请单击 "代码"(Code),然后单击 "首选项"(Preferences),再选择 "设置"(Settings)。你会看到一个标题为 "常用 "的列表;点击任何一个小标题,就能看到一些修改 VS 代码安装的常用方法。花点时间看看是否有什么方法能让 VS Code 更好地为你工作,但不要因为迷恋配置编辑器而耽误了学习如何使用 Python!

VS 代码快捷方式

所有编辑器和集成开发环境都提供了高效的方法来完成每个人在编写和维护代码时都需要完成的常见任务。例如,你可以轻松地缩进单行代码或整个代码块;你也可以轻松地在文件中上下移动代码块。

快捷方式有很多,在此无法一一详述。本节将与您分享几个在您编写第一个 Python 文件时可能会有用的快捷方式。如果您最终使用了与 VS Code 不同的编辑器,请确保您学会了如何在您选择的编辑器中高效地完成这些相同的任务。

缩进和取消缩进代码块

要缩进整个代码块,请选中该代码块并按 CTRL-],或 macOS 上的 ⌘-] 键。要取消代码块的缩进,请选中该代码块并按 CTRL-[,或在 macOS 上按 ⌘-[。

注释掉代码块

要暂时禁用某个代码块,可以选中该代码块并注释它,这样 Python 就会忽略它。选中要忽略的代码块,然后按 CTRL-/,或 macOS 上的⌘-/。选中的行将被注释掉,并在与代码行相同的位置缩进一个哈希标记 (#),以表示这些不是常规注释。当你想取消注释代码块时,选中该代码块并重新发出相同的命令即可。

向上或向下移动线路

随着程序越来越复杂,你可能会发现自己想要在文件中上下移动代码块。为此,请选中要移动的代码,然后按 ALT 向上箭头,或 macOS 上按 Option 向上箭头。与向下箭头相同的组合键将在文件中向下移动代码块。

如果你要上下移动一行代码,你可以点击该行的任意位置;你不需要选中整行代码来移动它。

隐藏文件资源管理器

VS Code 中集成的文件资源管理器确实很方便。不过,在编写代码时,它可能会分散你的注意力,而且会占用较小屏幕上的宝贵空间。CTRL-B 命令(或 macOS 上的⌘-B)可以切换文件资源管理器窗格的可见性。

寻找额外的快捷键

在编辑环境中高效工作需要练习,但也需要用心。当你在学习使用代码时,试着注意你重复做的事情。您在编辑器中的任何操作都可能有快捷方式;如果您点击菜单项来执行编辑任务,请查找这些操作的快捷方式。如果你经常在键盘和鼠标之间切换,请查找导航快捷键,这样你就不用经常使用鼠标了。

点击 "代码",然后点击 "首选项",再选择 "键盘快捷方式",就能看到 VS 代码中的所有键盘快捷方式。你可以使用搜索栏查找特定的快捷键,也可以滚动列表查找能帮助你提高工作效率的快捷键。

请记住,最好将注意力集中在正在处理的代码上,避免在使用的工具上花费过多时间。

其他文本编辑器和 IDE

你会听说或看到有人在使用许多其他文本编辑器。它们中的大多数都可以通过配置来帮助你,就像你自定义 VS Code 的方式一样。以下是你可能听说过的文本编辑器的一小部分。

IDLE

IDLE 是 Python 附带的文本编辑器。与其他更现代的编辑器相比,它的操作不太直观。不过,您会在其他针对初学者的教程中看到对它的引用,所以您不妨一试。

Geany

Geany 是一款简单的文本编辑器,它能在单独的终端窗口中显示所有输出,帮助你轻松使用终端。Geany 的界面非常简约,但功能强大,许多经验丰富的程序员仍在使用它。

如果你觉得 VS Code 太令人分心,功能太多,不妨考虑使用 Geany。

Sublime Text

Sublime Text 是另一款简约型编辑器,如果你觉得 VS Code 太忙,可以考虑使用它。Sublime Text 拥有非常简洁的界面,即使在超大文件上也能正常运行。它是一款不会妨碍你工作的编辑器,能让你专注于正在编写的代码。

Sublime Text 提供无限制的免费试用,但它不是免费或开源的。如果你决定喜欢它,并有能力购买完整的许可证,就应该购买。购买是一次性的,不是软件订阅。

Emacs 和 Vim

Emacs 和 Vim 是深受许多资深程序员喜爱的编辑器,因为它们的设计让你在使用时双手无需离开键盘。一旦掌握了编辑器的工作原理,编写、阅读和修改代码就会变得非常高效。这也意味着这两种编辑器的学习曲线都相当陡峭。大多数 Linux 和 macOS 机器都包含 Vim,而且 Emacs 和 Vim 都可以完全在终端内运行。因此,它们经常被用于通过远程终端会话在服务器上编写代码。

程序员通常会建议你试用它们,但许多精通编程的程序员却忘记了新程序员已经在努力学习了。了解这些编辑器是件好事,但在使用更友好的编辑器处理代码之前,你应该暂缓使用这些编辑器,因为这样可以让你专注于学习编程,而不是学习使用编辑器。

PyCharm

PyCharm 是一个深受 Python 程序员欢迎的集成开发环境,因为它是专为 Python 而设计的。完整版需要付费订阅,但也有名为 PyCharm Community Edition 的免费版本,许多开发者都觉得它很有用。

如果你试用 PyCharm,请注意它默认情况下会为你的每个项目设置一个孤立的环境。这通常是件好事,但如果你不了解它在为你做什么,它可能会导致意想不到的行为。

Jupyter Notebooks

Jupyter Notebook 是一种不同于传统文本编辑器或集成开发环境的工具,因为它是一个主要由块构建的网络应用程序;每个块都是代码块或文本块。文本块以 Markdown 格式呈现,因此你可以在文本块中加入简单的格式。

Jupyter Notebooks 的开发是为了支持在科学应用中使用 Python,但现在已经扩展到在各种情况下都非常有用。与在 .py 文件中编写注释不同,你可以编写带有简单格式的清晰文本,例如标题、列表和代码段之间的超链接。每个代码块都可以独立运行,让你可以测试程序的一小部分,也可以一次性运行所有代码块。每个代码块都有自己的输出区域,你可以根据需要打开或关闭输出区域。

Jupyter Notebook 有时会让人感到困惑,这是因为不同单元格之间存在交互。如果你在一个单元格中定义了一个函数,那么其他单元格也可以使用该函数。这在大多数情况下是有益的,但在较长的笔记本中,如果你不完全了解笔记本环境的工作原理,就会感到困惑。如果你正在用 Python 进行任何科学或以数据为重点的工作,你几乎肯定会在某些时候看到 Jupyter Notebook。