编辑 Python 代码并使用 Intellisense

由于你在代码编辑器中花费了很多开发时间, 因此 Visual Studio 中的 Python 支持 提供了有助于提高工作效率的功能。 功能包括 IntelliSense 语法突出显示、自动完成、签名帮助、方法替代、搜索和导航。

代码编辑器与 Visual Studio 中的 交互式 窗口集成。 工作时,可以轻松地在两个窗口之间交换代码。 有关详细信息,请参阅 教程步骤 3:使用交互式 REPL 窗口 并使用 交互式窗口 - 发送到交互式命令

大纲功能有助于专注代码的特定部分。 有关在 Visual Studio 中编辑代码的常规文档,请参阅 代码编辑器的功能

Visual Studio 对象浏览器 允许检查每个模块中定义的 Python 类以及这些类中定义的函数。 可以在 “视图” 菜单上或使用键盘快捷方式 Ctrl+Alt+J 来访问此功能。

使用 IntelliSense 功能

IntelliSense 提供代码补全签名提示快速信息代码着色。 Visual Studio 2017 版本 15.7 及更高版本还支持 类型提示

为了提高性能,Visual Studio 2017 版本 15.5 及更早版本中的 IntelliSense 依赖于为项目中每个 Python 环境生成的完成数据库。 如果添加、删除或更新包,可能需要刷新数据库。 “IntelliSense”选项卡上的“Python 环境”窗口(解决方案资源管理器的配套)中显示了数据库状态。有关详细信息,请参阅“环境”窗口参考

Visual Studio 2017 版本 15.6 及更高版本使用不同的方法来提供不依赖于数据库的 IntelliSense 完成。

补全

完成显示为语句、标识符和其他可在编辑器中的当前位置正确输入的单词。 Intellisense 基于上下文填充选项列表,并筛选不正确或分散注意力的项目。 完成通常通过输入不同的语句(如 import)和运算符(包括句号)来触发,但它们可以通过选择键盘快捷方式 Ctrl+J +空格随时弹出。

在 Visual Studio 编辑器中,通过 Intellisense 展示成员完成的截图。

打开自动补全列表时,可以使用箭头键、鼠标或继续输入来搜索所需的补全。 您输入更多字母时,列表将进一步过滤以显示可能的完成项。 还可以使用快捷方式,例如:

  • 键入不在名称开头的字母,例如“parse”以查找“argparse”
  • 仅键入单词开头的字母,例如“abc”以查找“AbstractBaseClass”或“air”以查找“as_integer_ratio”
  • 跳过字母(如“b64”)查找“base64”

下面是一些示例:

显示 Visual Studio 编辑器中筛选成员完成的屏幕截图。

在您在变量或值后输入句点时,成员自动完成功能将显示,显示潜在类型的方法和属性。 如果变量可以是多个类型,则列表包括所有类型中的所有可能性。 显示附加信息以指示哪些类型支持各个补全操作。 如果所有可能的类型都支持完成,则不会显示任何批注。

显示 Visual Studio 编辑器中多种类型的成员完成的屏幕截图。

默认情况下,不会显示“dunder”成员(以双下划线开头和结尾的成员)。 通常,不应直接访问此类成员。 如果需要使用 dunder,请键入前导双下划线以将这些完成添加到列表中:

显示 Visual Studio 编辑器中专用的 dunder 成员完成类型的屏幕截图。

importfrom ... import语句显示可导入的模块列表。 该 from ... import 语句生成一个列表,其中包含可从指定模块导入的成员。

显示 Visual Studio 编辑器中的导入和导入完成的屏幕截图。

raiseexcept 语句显示了可能是错误类型的类的列表。 该列表可能不包含所有用户定义的异常,但它有助于快速查找合适的内置异常:

显示了 Visual Studio 编辑器中异常处理完成的屏幕截图。

选择 @ 符号(at)将启动一个修饰器,并显示可用的修饰器选项。 其中许多项不能用作修饰器。 检查库文档以确定要使用的修饰器。

显示 Visual Studio 编辑器中修饰器完成的屏幕截图。

有关详细信息,请参阅 选项 - 完成结果

类型提示

Visual Studio 2017 版本 15.7 及更高版本中提供了类型提示。

Python 3.5+ 中的“类型提示”(PEP 484 (python.org)是用于指示参数类型、返回值和类属性的函数和类的注释语法。 将鼠标悬停在具有这些注释的函数调用、参数和变量上时,IntelliSense 会显示类型提示。

在下面的示例中,类 Vector 声明为类型 List[float],函数 scale 包含其参数和返回值的类型提示。 将鼠标悬停在该函数的调用上会显示类型提示:

显示如何将鼠标悬停在函数调用上以显示类型提示的屏幕截图。

在下一个示例中,您可以看到类的 Employee 注解属性如何显示在特性的 IntelliSense 完成弹出窗口中。

显示具有类型提示的类的 IntelliSense 完成的屏幕截图。

在整个项目中验证类型提示也很有帮助,因为错误通常只有在运行时才会出现。 为此,Visual Studio 通过上下文菜单命令 Python> 在解决方案资源管理器运行 Mypy 集成行业标准 Mypy 工具:

显示解决方案资源管理器中 Python 项目的可用 linting 命令的屏幕截图。

根据需要,运行命令提示符以安装 Mypy 包。 然后,Visual Studio 运行 Mypy 来验证项目中每个 Python 文件中的类型提示。 错误显示在“Visual Studio 错误列表” 窗口中。 选择窗口中的项将导航到代码中的相应行。

作为一个简单的示例,以下函数定义包含一个类型提示,指示 input 参数为类型 str,而对该函数的调用将尝试传递整数:

def commas_to_colons(input: str):
    items = input.split(',')
    items = [x.strip() for x in items]
    return ':'.join(items)

commas_to_colons(1)

使用此代码上的 “运行 Mypy ”命令将生成以下错误:

显示 Mypy 验证类型提示的示例结果的屏幕截图。

注释

对于 3.5 之前的 Python 版本,Visual Studio 还显示通过 Typeshed 存根文件.pyi)提供的类型提示。 如果不想在代码中直接包含类型提示,或者为不直接使用的库创建类型提示,可以使用存根文件。 有关详细信息,请参阅 Mypy 项目 Wiki 中的 Python 模块创建存根

Visual Studio 当前不支持注释中的类型提示。

签名助手

编写调用函数的代码时,键入左括号 (时会显示签名帮助。 它显示可用的文档和参数信息。 可以在函数调用中访问键盘快捷方式 Ctrl+Shift+Space 的签名帮助。 显示的信息取决于函数源代码中的文档字符串,但包括任何默认值。

显示 Visual Studio 编辑器中的签名帮助的屏幕截图。

小窍门

若要禁用签名帮助,请转到 “工具>选项>文本编辑器>Python>常规”。 清除 语句完成>参数信息 复选框。

快速信息

将鼠标指针悬停在标识符上方会显示快速信息工具提示。 根据标识符,快速信息可能会显示潜在值或类型、任何可用的文档、返回类型和定义位置:

显示 Visual Studio 编辑器中“快速信息”显示信息的屏幕截图。

代码着色

代码着色使用代码分析中的信息来着色变量、语句和代码的其他部分。 引用模块或类的变量可能以不同于函数或其他值的颜色显示。 参数名称可能以不同于本地或全局变量的颜色显示。 默认情况下,函数不会以粗体显示。

显示 Visual Studio 编辑器中的代码和语法着色的屏幕截图。

若要自定义颜色,请转到 工具>选项>环境>字体和颜色。 在 “显示项 ”列表中,修改所需的 Python 条目:

显示 Visual Studio 中字体和颜色选项的屏幕截图。

插入代码片段

代码片段是可以通过键盘快捷方式并选择 Tab 键插入您文件中的代码段。您还可以使用 编辑>IntelliSense>插入代码段环绕 命令,选择 Python,然后选择所需的代码片段。

例如, class 是插入类定义的代码片段的快捷方式。 输入 class 时,您会看到代码片段出现在自动完成列表中。

显示类快捷方式的代码片段的屏幕截图。

选择 Tab 将生成类的其余部分。 然后,您可以键入名称和基类列表,使用 Tab 在突出显示的字段之间移动,然后按 Enter 键开始输入正文。

显示代码片段区域突出显示的屏幕截图,供你完成。

使用 “编辑>IntelliSense>插入代码段 ”菜单命令时,首先选择 Python,然后选择所需的代码片段:

显示如何通过“插入代码段”命令选择代码片段的屏幕截图。

“编辑>IntelliSense>环绕”命令将在文本编辑器中将当前选定内容置于所选结构元素之内。 假设你有一段类似于以下示例的代码:

sum = 0
for x in range(1, 100):
    sum = sum + x

选择此代码并选择 “环绕” 命令将显示可用代码段的列表。 从代码片段列表中选择 def 会将所选代码置于函数定义中。 可以使用 Tab 键在突出显示的函数名称和参数之间导航:

显示如何使用“环绕”命令对代码片段进行操作的屏幕截图。

检查可用的代码片段

可以在 代码片段管理器中看到可用的代码片段。 从 工具>代码片段管理器 访问此功能,并选择 Python 作为语言:

显示 Visual Studio 中的代码片段管理器的屏幕截图。

若要创建自己的代码片段,请参阅 演练:创建代码片段

如果你编写了一个想要共享的出色代码片段,请随意将其发布到 gist 中并 告知我们。 我们可以将其包含在 Visual Studio 的未来版本中。

在 Visual Studio 中,对 Python 的支持提供了多种在代码中快速导航的方法,包括源代码公开的库。 可以找到带有 导航栏转到定义转到查找所有引用命令 的源代码的库。 还可以使用 Visual Studio 对象浏览器

导航栏显示在每个编辑器窗口的顶部,并包含两级定义列表。 左侧下拉列表包含当前文件中的顶级类和函数定义。 右侧下拉列表显示左侧所示作用域内的定义列表。 在编辑器中四处移动时,列表会更新以显示当前上下文,还可以从这些列表中选择一个条目以直接跳转到。

显示 Visual Studio 编辑器中的导航栏的屏幕截图。

小窍门

若要隐藏导航栏,请转到 “工具>选项>文本编辑器>Python>常规 ”并清除 “设置”>导航栏

转到定义

Go To Definition 命令从标识符(如函数名称、类或变量)的使用快速跳转到源代码定义的位置。 若要调用该命令,请右键单击标识符并选择“ 转到定义 ”或将插入点放在标识符中,然后选择 F12。 该命令在源代码可用的情况下,适用于您的代码和外部库。 如果库源代码不可用, 请转到定义 会跳转到模块引用的相关 import 语句或显示错误。

显示 Visual Studio 中的“转到定义”命令的屏幕截图。

转到

“编辑>转到”命令(Ctrl+)在编辑器中显示一个搜索框可在其中键入任何字符串,并在代码中看到可能的匹配项,该代码定义包含该字符串的函数、类或变量。 此功能提供与 转到定义 类似的功能,但无需查找标识符的使用。

若要导航到该标识符的定义,请双击任意名称,或使用箭头键选择名称,后跟 Enter

显示 Visual Studio 中“Go To”命令的屏幕截图。

查找所有引用

“查找所有引用”功能是发现定义和使用任何给定标识符的位置(包括导入和分配)的有用方法。 若要调用命令,请右键单击标识符并选择“ 查找所有引用”,或将插入符号置于标识符中,然后选择 Shift+F12。 双击列表中的某个项将导航到其位置。

显示 Visual Studio 中“查找所有引用”结果的屏幕截图。