Python

PyCharm 提供了多种方法来帮助检查和检查脚本中对象的类型。PyCharm 支持使用模块和PEP 484定义的格式在函数注释和类型注释中进行类型提示typing

添加类型提示

尽管 PyCharm 支持PEP 484中支持的所有添加类型的方法,但通过意图操作使用类型提示是最方便的方法。根据您使用的解释器,类型被添加为注释 (Python 3) 或注释 (Python 2)。

要添加类型提示,请执行以下步骤:

  1. 选择一个代码元素。

  2. Alt+Enter

  3. 选择为 ... 添加类型提示

  4. 按下Enter以完成操作或在适当的情况下编辑类型。

例子

意图行动

注释的结果代码(Python 2)

注释的结果代码(Python 3)

变量

为变量添加类型提示的示例
为变量添加类型提示的示例(Python 2)
为变量添加类型提示的示例(Python 3)

功能

为函数添加类型提示的示例
为函数添加类型提示的示例(Python 2)
为函数添加类型提示的示例(Python 3)

类属性

为类属性添加类型提示的示例
为类属性添加类型提示的示例(Python 2)
为类属性添加类型提示的示例(Python 3)

您还可以使用Python 存根注释来指定变量、函数和类字段的类型。

使用注释指定类型

使用# type:注释指定局部变量和属性的类型:

类型提示属性

转换评论

对于基于注释的类型提示,PyCharm 建议使用意图操作,允许您将基于注释的类型提示转换为变量注释。此意图的名称为Convert to variable annotation,其工作方式如下:

从输入 import List, Optional xs = [] # type: List[Optional[str]]
从输入 import List, Optional xs: List[Optional[str]] = []

类型提示验证

每当您应用类型提示时,PyCharm 都会根据支持的 PEP检查类型是否正确使用。如果出现使用错误,则会显示相应的警告并建议建议的操作。以下是验证示例。

验证错误

建议的行动

类型声明的重复。

错误的类型提示

删除任一类型声明。

类型声明中的参数数量与函数参数的数量不同。

争论太多

调整参数的数量。

带解包的类型注释与对应的目标不匹配。

解压变量的类型不正确

检查目标格式并相应地修改类型注释。

参数的语法不正确Callable

不正确的可调用格式

使用建议的格式并添加所需的括号来包装Callable参数。

赋值表达式中的意外类型。

赋值表达式中的意外类型

对齐类型以匹配预期的模式。

Final变量赋值。

为最终变量赋值

您不能更改Final变量。考虑更改变量的类型。

继承一个Final类。

继承最终类

你不能继承一个Final类。考虑改变它的类型。

函数参数的类型不正确。

文字类型验证

使用Color类型而不是int.

类的错误使用TypedDict

TypedDict 类的类型验证

参考TypedDict对象如下:

record_movie(Movie(title='Blade Runner', year=1982))

装饰方法的类型不正确。PyCharm 可以根据装饰器的类型以及装饰器的类型提示来验证装饰方法的类型:

推断装饰方法的类型

在此示例中,使用建议的类型,str而不是int.

您可以添加# type: ignore注释来禁止类型验证警告或缺少导入语句。

忽略类型验证

Python存根

由于 PyCharm 支持Python 存根文件,您可以使用 Python 3 语法为 Python 2 和 3 指定类型提示。

如果存根文件中记录了任何类型提示,它们将在使用这些存根的代码中可用。例如,以下类型提示some_func_2在 Python 代码中变为可用:

在存根中输入提示

如果您正在使用检测到存根模拟的软件包,将显示以下消息:

存根包检查

您可以安装存根包,忽略此消息并继续使用当前安装的包,甚至可以在项目Settings/Preferences中禁用相应的检查。

使用 Typeshed

Typeshed是一组带有用于标准 Python 库和各种包的类型注释的文件。Typeshed 存根为使用类型提示定义的 Python 类、函数和模块提供定义。PyCharm 使用此信息来更好地完成代码、检查和其他代码洞察功能。

PyCharm 正在切换到Typeshed,这是 Python 存根的通用存储库。与 PyCharm 捆绑的 Typeshed 存根显示在节点External Libraries |下的项目视图中。<Python 解释器> | 排版存根。请注意,PyCharm 当前仅使用少数捆绑存根(即builtins.pyityping.pyi和其他几个)。

要使用您自己的版本覆盖捆绑的 Typeshed 存储库,请执行以下步骤:

  1. 将部分或全部存根复制到项目中的目录中。

  2. 通过选择将目录标记为 |将目录标记为源根目录 从目录的上下文菜单中获取Root 。

Python 骨架存储库https://github.com/JetBrains/python-skeletons现在已弃用。

最后修改:2021 年 5 月 31 日