首页 > 解决方案 > 抑制 VS Code 中的 Pylance 类型注释警告

问题描述

在我工作的公司,我们使用类型注释来定义函数的预期返回类型。大多数开发人员都在使用 PyCharm,但我更喜欢坚持使用 VS Code。

VS Code IDE 中的以下行:

def example() -> [str]:

引发 Pylance 警告:

List expression not allowed in type annotation
  Use List[T] to indicate a list type or Union[T1, T2] to indicate a union typePylance

并希望我使用:

def example() -> List[str]

虽然解决这个问题需要我检查整个代码库,并且不会被拉取请求接受。

这种类型的类型注解在 Python 3.10 中是允许的(我不是 100% 确定),但在我们当前使用的 Python 3.7 中是不允许的。因为我可以忍受这个警告,所以我想压制它。

标签: pythonvisual-studio-codevscode-settingspylance

解决方案


Pylance 支持PEP 484

存在许多与类型提示不兼容的函数注释的现有或潜在用例。这些可能会混淆静态类型检查器。然而,由于类型提示注解没有运行时行为(除了对注解表达式的评估和将注解存储在函数对象的_注解_属性中),这不会使程序不正确——它只是可能导致类型检查器发出虚假的警告或错误。

要标记不应被类型提示覆盖的程序部分,您可以使用以下一项或多项:

a # 类型:忽略评论;
类或函数上的 @no_type_check 装饰器;
用@no_type_check_decorator 标记的自定义类或函数装饰器。

或者,您可以在项目的根目录中创建一个pyrightconfig.jsonfor Pyright(因为这Pylance是在下面使用的)或 a pyproject.toml,并指定要忽略的错误类型。您可以在显示错误消息的悬停小部件中查看错误类型。

pyrightconfig.json例子:

{
        "reportGeneralTypeIssues": false,
}

pyproject.toml例子:

[tool.pyright]
reportGeneralTypeIssues = false

有关更多信息,请参阅类型检查诊断设置


推荐阅读