使用源代码

本节介绍了各种上下文感知代码完成技术,可让您加快编码过程。

基本完成

基本代码完成可帮助您完成可见范围内的类、方法和关键字的名称。当您调用代码完成时,PyCharm 会分析上下文并建议可以从当前插入符号位置访问的选项(建议还包括Live templates)。

如果将基本代码完成应用于字段、参数或变量声明的一部分,PyCharm 会根据项目类型建议可能的名称列表。

第二次调用Basic代码补全显示整个项目中的类、函数、模块和变量的名称,不考虑依赖关系。

调用基本完成

  1. 开始输入名称。

  2. Ctrl+Space或选择代码 | 代码完成 | 主菜单中的基本

    下图显示了以下情况的基本代码完成:

    • 方法:

      完成方法
    • 方法参数:

      完成方法参数
    • 字典:

      完成字典
    • Django 模板:

      完成筛选
    • Python 字符串文字中的文件路径补全:

      路径完成
      路径完成
  3. 如有必要,再按Ctrl+Space一次(或按Ctrl+Alt+Space)。

    这显示了类、函数、模块和变量的名称。

    类名补全

类型匹配完成

智能类型匹配代码完成过滤建议列表并仅显示适用于当前上下文的类型。

调用类型匹配完成

  • 智能类型匹配代码完成过滤建议列表并仅显示适用于当前上下文的类型。要调用类型匹配完成,请开始输入您的代码并按Ctrl+Shift+Space。或者,选择代码 | 代码完成 | 主菜单中的类型匹配

智能类型完成

语句完成

您可以使用语句完成创建语法正确的代码结构Ctrl+Shift+Enter。它插入了必要的语法元素,让您处于可以开始输入下一条语句的位置。

完成方法声明

  • 开始输入方法声明并Ctrl+Shift+Enter在左括号后按。

    PyCharm 使用强制参数自动完成方法声明self。开始在 Python 类中键入方法声明,PyCharm 将self在参数列表的左括号之后插入。此行为可在编辑器设置的Smart Keys页面中进行配置。

    方法的语句完成

完成一个代码构造

  • 开始输入代码结构并按Ctrl+Shift+Enter

    PyCharm 自动完成构造并添加所需的标点符号。插入符号放置在下一个编辑位置。

    完成代码构造

集合中的完整语句

  • PyCharm 自动在多行集合文字中的换行符之前插入尾随逗号。在 dict 文字中,它在键和值之间插入冒号。按下Ctrl+Shift+Enter以调用语句完成:

    完成集合中的当前语句

    请注意,由于某些不完整集合文字的语法存在语言歧义,冒号既不会插入到 dict 文字的第一个键之后,也不会插入到带括号的元组的第一项之后。

嬉皮完成

Hippie 补全是一个补全引擎,可以在可见范围内分析您的文本并根据当前上下文生成建议。它可以帮助您完成任何当前打开的文件中的任何单词。

将插入符号处的字符串扩展为现有单词

  1. 键入初始字符串并执行以下操作之一:

    • Alt+/或选择代码 | 代码完成 | 循环展开单词以在插入符号之前搜索匹配的单词。

    • Alt+Shift+/或选择代码 | 代码完成 | 循环展开单词(向后)以在插入符号之后和其他打开的文件中搜索匹配的单词。

    出现第一个建议值,并且原型在源代码中突出显示。

    展开词
  2. 接受建议,或按住Alt键并按住/直到找到所需的单词。

后缀代码完成

后缀代码完成可帮助您在编写代码时减少向后的插入符号跳转。您可以根据在点后键入的后缀、表达式的类型及其上下文,将已键入的表达式转换为不同的表达式。

启用和配置后缀补全

  • 转到设置/首选项 | 编辑 | 一般 | 后缀补全并选中启用后缀补全复选框。

  • 选择TabSpaceEnter用于扩展后缀模板。

  • 启用/禁用所选语言的特定后缀模板。

转换带有后缀的语句

  • 键入一个表达式,然后在一个点后键入一个后缀,例如,.if:

    def f(a): a.if

    if初始表达式被一个语句包裹:

    def f(a): 如果 a:

您可以在编辑器 |中禁用某些后缀补全模板。一般 | IDE设置的Postfix完成Ctrl+Alt+S页面。

您可以选择TabSpaceEnter展开后缀模板。

您可以编辑预定义的后缀模板,例如,将长键替换为较短的键,或扩展适用的表达式类型列表。由于 PyCharm 的限制,您无法为 Python 创建任何自定义后缀模板。

F弦补全

每当您在普通字符串文字中打开花括号时,PyCharm 都会提供与 f 字符串相同的补全建议。f当您选择建议的选项之一时,IDE 通过添加缺少的前缀和右花括号自动将文字转换为 f 字符串。

F弦补全

模块名称完成时自动导入

当您在 Python 代码中引用任何模块成员或包并调用代码完成时,PyCharm 会自动添加导入语句。代码完成时的自动导入也适用于一些流行的包名称别名,例如npfornumpypdfor pandas

代码完成时自动导入

配置代码完成设置

要配置代码完成选项,请转到编辑器 | 一般 | IDE设置的代码完成Ctrl+Alt+S页面。

您可以选择以下设置:

物品

描述

相符

选择是否要在完成建议时考虑字母大小写。选择是否要匹配第一个字母或所有字母的大小写。

自动插入单个建议

如果只有一个基本和/或智能类型匹配完成的建议,请选择是否要自动完成代码。

按字母顺序对建议进行排序

选择是否要按字母顺序对建议列表中的项目进行排序,而不是按相关性对它们进行排序。

您可以随时通过单击图标动作更多建议列表并切换按名称排序选项来更改此行为。

键入时显示建议

选择是否要自动调用建议列表,而不必显式调用完成。默认情况下启用此选项。

通过按空格、点或其他与上下文相关的键插入选定的建议

选择是否要通过键入取决于语言、上下文等的某些键来插入选定的建议。

显示文档弹出窗口

选择以自动为建议列表中的每个项目显示一个弹出窗口,其中包含当前在查找列表中突出显示的类、方法或字段的文档。

在右侧的字段中,指定延迟(以毫秒为单位),之后应该会出现弹出窗口。

完成提示和技巧

缩小建议列表

  • 您可以通过键入单词的任何部分(甚至是中间某处的字符)或在点分隔符后调用代码完成来缩小建议列表。PyCharm 将显示包含您在任何位置输入的字符的建议。

    这使得通配符的使用变得不必要:

    codeCompletionWildcard.png

    如果是CamelCasesnake_case名称,请仅键入首字母。PyCharm 自动识别并匹配首字母。

接受建议

您可以通过以下方式之一接受列表中的建议:

  • Enter或双击列表项以将其插入到插入符号的左侧。

  • Tab替换插入符号右侧的字符。

  • 用于Ctrl+Shift+Enter使当前代码结构在语法上正确(平衡括号、添加缺少的大括号和分号,等等)。

您还可以使用特定键插入选定的完成建议:转到编辑器 | 一般 | IDE 设置的代码完成Ctrl+Alt+S页面并选择通过按空格、点或其他与上下文相关的键选项插入所选建议。这些键取决于语言、您的上下文等。

查看定义

  • 当您在建议列表中选择一个条目时,通过按来使用定义选项:Ctrl+Shift+I

    快速定义

查看代码文档

  • 您可以按(查看 | 快速文档)查看建议列表中选项的文档:Ctrl+Q

    快速文档

    您可以将 IDE 配置为在单击列表中的选项时自动显示文档弹出窗口:按下Ctrl+Alt+S打开 IDE 设置,选择Editor | 一般 | Code Completion,并启用Show the documentation popup选项。此外,以毫秒为单位指定弹出窗口应出现的延迟时间。

    或者,单击显示选项菜单图标文档弹出窗口并启用“完成期间自动显示”选项。

查看代码层次结构

从建议列表中选择条目后,您可以查看代码层次结构:

  • Ctrl+H- 查看类型层次结构

  • Ctrl+Shift+H- 查看方法层次结构。

使用机器学习辅助代码完成

您可以利用机器学习模型在建议列表中将最合适的项目排名更高。

为此,请按Ctrl+Alt+S打开 IDE 设置并选择Editor | 一般 | Code Completion,然后在Machine Learning-Assisted Completion下启用基于机器学习的排序完成建议选项。

机器学习排名上升和箭头图标指示建议的机器学习排名下降相关性是增加还是减少,因此建议在列表中向上或向下移动。

已启用 ML 补全

ML 完成机制不添加任何新元素,而是对从脚本或运行时检索到的元素进行排序。数据不会暴露在任何地方;它们是在当地收集的。

    故障排除

    如果代码完成不起作用,这可能是由于以下原因之一:

    • 省电模式已打开(文件|省电模式)。打开它可以消除后台操作,包括错误突出显示、动态检查和代码完成,从而最大限度地减少笔记本电脑的功耗。

    • 您的文件不驻留在内容根目录中,因此它没有获得代码完成所需的类定义和资源。

      有关详细信息,请参阅配置项目结构

    • 包含您希望出现在完成建议列表中的类和函数的文件被标记为纯文本文件。

    • 包含您希望出现在完成建议列表中的函数的外部库不会添加为依赖项或全局库

    最后修改时间:2022 年 1 月 18 日