在 Visual Studio 中使用 Python 交互式窗口

Visual Studio 为每个 Python 环境提供交互式读取-评估-打印循环(REPL)窗口,该窗口可改进命令行上的 python.exe 命令的 REPL。 Python 交互式窗口 允许输入任意 Python 代码并查看即时结果。 这种编码方法可帮助你学习和试验 API 和库,并通过交互方式开发工作代码以包含在项目中。

Visual Studio 2022 中 Python 交互式读取-评估-打印循环(REPL)窗口的屏幕截图。

Visual Studio 中 Python 交互式读取-评估-打印循环(REPL)窗口的屏幕截图。

Visual Studio 有许多 Python REPL 模式可供选择:

REPL 描述 编辑 调试 图像
标准 默认 REPL 直接与 Python 对话 标准编辑功能(多行及更多) 是,通过 $attach
调试 默认 REPL 与调试的 Python 进程进行通信 标准编辑 仅调试
IPython REPL 与 IPython 后端通信 IPython 命令,Pylab 的便利性 是,在 REPL 中内联
不带 Pylab 的 IPython REPL 与 IPython 后端通信 标准 IPython 是,单独的窗口

本文介绍 StandardDebug REPL 模式。 有关 IPython 模式的详细信息,请参阅使用 IPython REPL

有关包含示例的详细演练,包括与编辑器的交互(如 Ctrl+Enter),请参阅使用 REPL 交互窗口

先决条件

  • 在 Windows 上安装的 Visual Studio 支持 Python 工作负载。 有关详细信息,请参阅 在 Visual Studio中安装 Python 支持。

不支持 Visual Studio for Mac。 有关详细信息,请参阅 Visual Studio for Mac 的最新情况。Visual Studio Code 在 Windows、Mac 和 Linux 上通过可用扩展可以很好地支持 Python

打开交互式窗口

可通过多种方式为 Python 环境打开 交互式窗口

  • 在“Python 环境”窗口中

    1. 选择“视图”>“其他 Windows”>“Python 环境”,以打开“Python 环境”窗口(或使用键盘 Ctrl+K>Ctrl+`

    2. 在“Python 环境”窗口中,选择一个环境,然后切换到环境的“概述” 页。

    3. 概述 页中,选择 打开交互式窗口 选项。

    显示如何在 Visual Studio 2022 中使用所选环境的“打开交互窗口”选项的屏幕截图。

    显示如何在 Visual Studio 中使用所选环境的“打开交互窗口”选项的屏幕截图。

  • 在 Visual Studio 工具的“视图” 菜单中,选择 “其他窗口>Python 交互窗口”

    显示如何在 Visual Studio 2022 中使用“查看 Python 交互式窗口”菜单选项的屏幕截图。

    显示如何在 Visual Studio 中使用“查看 Python 交互式窗口”菜单选项的屏幕截图。

  • 在 Visual Studio 工具栏上的 调试 菜单中,选择 执行 <项目 |Python Interactive 中的文件> 或使用键盘快捷方式 Shift+Alt+F5。 可以在项目中为 启动文件 或任何独立文件打开 交互窗口

    显示如何在 Visual Studio 2022 中使用 Python 交互菜单中的“调试执行项目”选项的屏幕截图。

    显示如何在 Visual Studio 中使用 Python 交互菜单中的“调试执行项目”的屏幕截图。

另一种选择是在 Visual Studio 编辑器中编写的代码发送到 交互式窗口将代码发送到交互式窗口中介绍了此方法。

浏览交互式窗口选项

可以控制 交互窗口的各个方面,例如启动脚本文件的位置以及箭头键在窗口环境中的工作方式。 若要访问这些选项,请选择 Tools>Options>Python>Interactive Windows

Visual Studio 中 Python 交互式 Windows 选项的屏幕截图。

这些选项在 Visual Studio 的 Python 交互窗口选项中有详细描述。

使用交互式窗口

交互窗口中,您可以在 Python REPL 命令提示符 >>>逐行输入代码。 输入每行时,Visual Studio 将执行代码,包括导入必要的模块和定义变量。

当 Visual Studio 检测到代码行未形成完整语句时,代码提示将更改为 REPL 延续 ...。 此提示指示需要输入更多代码行才能完成语句块。 Visual Studio 在尝试执行代码块之前等待结束语法。

定义 for 语句时,代码的第一行将启动 for 块并以冒号结尾。 该块可以包含一行或多行代码,用于定义在 for 循环期间完成的任务。 在空白行中选择 Enter 时,交互窗口 关闭块,Visual Studio 将执行代码。

命令行 REPL 比较

交互式窗口 通过自动缩进属于周围范围的语句来改进通常的 Python 命令行 REPL 体验。 这两种方法都允许你使用箭头键滚动浏览输入的代码。 交互式窗口 还提供多行项,而命令行 REPL 仅提供单行。

元指令

交互式窗口 支持多个元命令。 所有元命令都以美元符号 $ 开头。 可以输入 $help 以查看元命令列表,并 $help <command> 获取特定命令的使用情况详细信息。 下表汇总了元命令。

元命令 描述
$$ 插入注释,这有助于在整个会话中注释代码。
$cls$clear 清除编辑器窗口的内容,但保留历史记录和执行上下文不变。
$help 显示命令列表,或有关特定命令的帮助。
$load 从文件加载命令并执行,直到完成。
$mod 将当前范围切换到指定的模块名称。
$reset 将执行环境重置为初始状态,但保留历史记录。
$wait 等待至少指定的毫秒数。

还可以通过实现和导出 IInteractiveWindowCommand 类,使用 Visual Studio 扩展扩展命令。 有关详细信息,请查看 GitHub上的示例(示例)。

切换交互式窗口范围

默认情况下,项目的 交互窗口 范围限定为项目的 启动文件,就像从命令提示符运行程序文件一样。 对于独立文件,范围设置为该文件。 在 REPL 会话期间,可以使用 模块范围 下拉列表来更改范围:

显示如何使用“模块范围”下拉菜单在 Visual Studio 2022 的交互式窗口中更改作用域的屏幕截图。

显示如何使用“模块范围”下拉菜单更改交互窗口中的范围的屏幕截图。

导入模块(如 import importlib)后,模块范围 下拉菜单中显示选项,以切换到该模块中的任何范围。 交互窗口中的消息 告知您已切换到新的作用域,方便您通过查看命令历史记录,跟踪在会话期间是如何达到特定状态的。

如果在作用域中输入 dir() 命令,Visual Studio 将在该范围内显示有效标识符,包括函数名称、类和变量。 下图显示了 dir() 命令在 importlib 范围内的结果:

屏幕截图,显示 Visual Studio 2022 中 importlib 作用域的交互式窗口中的输出。

屏幕截图,显示 importlib 范围的交互式窗口中的输出。

将代码发送到交互式窗口

除了直接在 交互式窗口 内工作外,还可以在 Visual Studio 编辑器中将代码发送到窗口。 此命令可用于迭代或进化代码开发,包括在开发代码时测试代码。

  1. 在 Visual Studio 编辑器中打开代码文件,并选择部分或全部代码。

  2. 右键单击所选代码并选择 发送到交互式(或使用 Ctrl +EE键盘快捷方式)。

    显示如何在 Visual Studio 2022 中使用“发送到交互”菜单选项的屏幕截图。

    显示如何在 Visual Studio 中使用“发送到交互”菜单选项的屏幕截图。

修改并运行代码

将代码发送到 交互窗口 并查看输出后,可以修改代码并测试更改。 使用向上和向下箭头滚动到窗口的命令历史记录中的代码。 通过选择 Ctrl +Enter来修改代码并运行更新的代码。

进行更改时,如果在完整代码语句末尾按下 Enter,Visual Studio 将执行代码。 如果代码语句未完成,Visual Studio 会将换行符插入窗口中。

保存代码并删除提示

完成对代码的工作后,可以在 交互窗口中选择更新的代码 并将其粘贴回项目文件以保存工作。

交互窗口 中的代码粘贴到编辑器中时,Visual Studio 会默认删除 REPL 命令提示符 >>> 和继续提示 ...。 此行为允许你轻松地将代码从窗口传输到编辑器。

可以通过“交互窗口”的“粘贴时删除 REPL 提示”选项来更改其行为

  1. 选择 工具>选项 打开“选项” 对话框。

  2. 展开“文本编辑器”> Python >“格式”部分

  3. 清除“粘贴时删除 REPL 提示”选项

  1. 选择 工具>选项 打开“选项” 对话框。

  2. 展开“文本编辑器”> Python >“高级”部分

  3. 清除“粘贴时删除 REPL 提示”选项

清除该选项时,提示字符将保留在从窗口中粘贴的代码中。 有关详细信息,请参阅 选项 - 杂项选项

查看 IntelliSense 行为

交互式窗口 包含基于实时对象的 IntelliSense 建议,与仅基于源代码分析的代码编辑器不同。 因此,交互式窗口 中的 IntelliSense 建议更为正确,尤其是使用动态生成的代码。 缺点是具有副作用的函数(如日志记录消息)可能会影响开发体验。

可以通过“完成”选项来调整 Intellisense 的行为

  1. 选择 工具>选项 打开“选项” 对话框。

  2. 展开 Python >“交互窗口”部分

  3. 调整“完成模式”组中的设置,例如“永不评估表达式”或“隐藏静态分析建议”

有关详细信息,请参阅 选项 - 交互式 Windows 选项