【问题标题】:VSCode auto complete string params for pythonpython的VSCode自动完成字符串参数
【发布时间】:2021-02-08 03:10:45
【问题描述】:

我一直在寻找是否可以在 VSCode 中为 Python 创建与在 JavaScript 中使用 jsdoc 相同的行为来显示字符串参数输入。

带有 JSDoc 的 JavaScript 示例:

/**
* @method someMethod
* @description A special method.
* @param { "option1" | "option2" } param1 Choose an option.
*/
function someMethod(param1) {
    console.log(param1);
}

所以调用方法的时候,VSCode会给param1自动补全选项。

所以我正在寻找一个 Python 等价物,最好使用 google docstring 格式:

def some_method(param1: str) -> None:
    """A special method.

    Args:
        param1 (str): Choose an option. # HOW CAN WE ADD INTELLISENSE OPTIONS HERE??
    
    """
    print(param1)

【问题讨论】:

  • 第一个问题是:python语言服务器是否解析文档字符串
  • NumPy Doc 格式中有 choices 选项,但我认为 VS Code 需要一些额外的扩展来处理它。 doc

标签: python visual-studio-code docstring


【解决方案1】:

在 VSCode 中,使用的语言服务器决定了自动补全。当前 Python 补全的“黄金标准”是 Microsoft Pylance extension,它建立在 Microsoft Pyright 之上,用于分析您的源代码。

反过来,Pyright 依靠类型推断和 type hints 来了解您有哪些可用的自动完成选项。虽然这确实包括support for comments,但不支持文档字符串中的类型提示(这是类型提示规范中的explicitly rejected)。

如果您习惯于 Typescript,Python 类型提示和 Pylance 应该以几乎相同的方式工作。您自己的示例已经包含类型提示,您的示例的 literal 翻译将使用 literal types:

from typing import Literal

def some_method(param1: Literal["option1", "option2"]) -> None:
    """A special method."""
    print(param1)```

然后您可以自动完成这些值:

.

(我注意到appears to be a bug in the current VSCode or Pylance release 只能通过将光标放在结束引号之后来自动完成字符串;我相信这将在未来的版本中得到修复)。

一个警告:Pylance 仍被标记为 preview 项目。但是,它的改进非常快,我在所有 Python 工作中都使用它。

【讨论】:

  • 不错!很遗憾它是越野车,但希望他们很快就会给它一些爱。我发现打开括号然后点击显示建议的Ctrl + space,然后点击任何一个。问题是它还插入了“引号”,因此如果您没有输入它们,那么它会按预期插入,但是如果不输入它们,您需要手动触发自动完成建议。我很乐意看到这成为 vscode 的原生功能,因此我不必鼓励人们安装插件来简化包。感谢您的详细回答!
  • @Steve:MS 已对我的报告进行了分类并将其标记为错误,因此希望它会在下一个版本中得到修复。
猜你喜欢
  • 2019-10-26
  • 2018-06-01
  • 2020-04-13
  • 2021-01-16
  • 1970-01-01
  • 1970-01-01
  • 2021-06-05
  • 2021-11-06
  • 1970-01-01
相关资源
最近更新 更多