在 Visual Studio Code 中运行 Python 代码
无论你是在 REPL 中试验较短的 Python 代码,还是准备运行一个 Python 脚本,Python 扩展都提供了多种运行代码的方式。
以交互方式运行 Python 代码
安装在计算机上的 Python 解释器为你提供了一个称为交互式 REPL(Read-Evaluate-Print Loop,读取-求值-打印循环)的工具,它会读取一段代码,对其求值,然后将结果打印到控制台。
在你的计算机上安装 Python 解释器后,你可以通过打开系统的终端或命令提示符,然后输入 python
(Windows) 或 python3
(macOS/Linux) 来激活 Python REPL(以 >>>
标记),从而与 Python REPL 交互。
在 VS Code 中,还有另外两种与 Python REPL 交互的方式。
原生 REPL
VS Code 的 Python 原生 REPL 构建于经典的 Python REPL 之上,并提供了额外的功能,如 Intellisense(智能感知)和语法高亮,使你的 Python 开发体验更加高效。然而,这个 REPL 仍然遵循 Python 内置 REPL 的原则,即历史执行顺序及其内容是不可变的。
你可以通过命令面板 (⇧⌘P (Windows, Linux Ctrl+Shift+P)) 搜索 Python: Start Native REPL (Python: 启动原生 REPL) 来打开原生 REPL。此外,你可以在你的 settings.json
文件中设置 "python.REPL.sendToNativeREPL": true
,通过智能发送 (Shift+Enter) 和 Run Selection/Line in Python REPL (在 Python REPL 中运行选中内容/行) 将代码发送到原生 REPL。你也可以选择在 settings.json
中设置 "python.REPL.sendToNativeREPL": false
,继续使用位于终端中的 Python 内置 REPL (>>>
)。
终端 REPL
与在 VS Code 之外与 Python REPL 交互的方式类似,你可以在 VS Code 中打开一个终端并激活 Python REPL。为此,你可以在命令面板 (⇧⌘P (Windows, Linux Ctrl+Shift+P)) 中搜索 Python: Start Terminal REPL (Python: 启动终端 REPL),这将为当前选择的 Python 解释器打开一个终端。或者,你也可以导航到 Terminal > New Terminal (终端 > 新建终端) 并输入 python
(Windows) 或 python3
(macOS/Linux) 命令。
通过终端 Shell 集成,终端支持许多功能,例如运行最近的命令、命令修饰符和改进的可访问性。要在终端中启用或禁用 Shell 集成,你可以在设置中切换 python.terminal.shellIntegration.enabled。
运行 Python 代码
Python 扩展提供了多种无需额外配置即可运行 Python 代码的方式。
-
选择编辑器右上角的 Run Python File in Terminal (在终端中运行 Python 文件) 播放按钮。
该按钮会打开一个终端面板,其中你的 Python 解释器会自动激活,然后运行指定的脚本(例如,
python3 hello.py
(macOS/Linux) 或python hello.py
(Windows))。 -
在编辑器窗口的任意位置右键单击,然后选择 Run > Python File in Terminal (运行 > 在终端中运行 Python 文件)(这会自动保存文件)。
-
选择一行或多行,然后按 Shift+Enter,或右键单击并选择 Run Selection/Line in Python Terminal (在 Python 终端中运行选中内容/行)。
此选项对于仅测试文件的一部分非常方便。
-
将光标放在一行代码上,然后按 Shift+Enter 激活智能发送。
智能发送
Python 扩展默认启用智能发送 (Shift+Enter)。智能发送会查看光标所在位置的代码,将最小的可运行代码块发送到 Python REPL,然后将光标移动到下一行代码。这使你能够轻松高效地运行程序中的 Python 代码。
智能发送在不支持的 Python 版本(例如 Python 2)或无效的 Python 代码上将不起作用。要禁用智能发送,改为仅发送光标所在行的代码,请将 python.REPL.enableREPLSmartSend
设置为 false
。