在 PyCharm 中进行类型提示
PyCharm 提供多种方法来帮助检查和验证脚本中对象的类型。 PyCharm 支持在函数注解和类型注释中使用 类型提示 ,使用 typing 模块和 PEP 484 定义的格式。
添加类型提示
尽管 PyCharm 支持 PEP 484 中支持的所有添加类型的方法,但通过意图操作使用类型提示是最方便的方式。 根据所使用的解释器,类型将作为注解(Python 3)或注释(Python 2)添加:
选择一个代码元素。
按下 Alt+Enter。
选择 为 ... 添加类型提示。
按 Enter 完成操作,或在适当时编辑类型。
示例 | 意图操作 | 注解的结果代码(Python 3) |
|---|---|---|
变量 | ![]() | ![]() |
函数 | ![]() | ![]() |
类属性 | ![]() | ![]() |
示例 | 意图操作 | 注释的结果代码(Python 2) |
|---|---|---|
变量 | ![]() | ![]() |
函数 | ![]() | ![]() |
类属性 | ![]() | ![]() |
您还可以使用 Python 存根 来指定变量、函数和类字段的类型。
使用注解指定返回类型
您可以使用 Python 3 注解为函数的返回类型添加注解。PyCharm 会为您插入返回类型注解,之后您可以根据需要调整类型: PyCharm 会为您插入返回类型注解,之后您可以根据需要调整类型:
将插入点放在函数名称处,然后按 Alt+Enter。
在打开的意图操作列表中,选择 使用注解指定返回值类型。

转换注释
对于基于注释的类型提示,PyCharm 提供了一种意图操作,允许您将基于注释的类型提示转换为变量注解。 此意图的名称为 转换为变量注解 ,其工作方式如下:
之前 | 之后 |
|---|---|
from typing import List, Optional
xs = [] # type: List[Optional[str]]
|
from typing import List, Optional
xs: List[Optional[str]] = []
|
验证类型提示
每当您应用类型提示时,PyCharm 会根据 支持的 PEP 检查类型是否正确使用。 如果存在使用错误,将显示相应的警告并建议推荐的操作。 以下是验证示例。
验证错误 | 建议的操作 |
|---|---|
类型声明重复。 ![]() | 移除其中一个类型声明。 |
类型声明中的参数数量与函数参数数量不匹配。 ![]() | 调整参数数量。 |
带有解包的类型注释与相应的目标不匹配。 ![]() | 检查目标格式并相应修改类型注释。 |
| 使用建议的格式并添加必要的括号以包裹 |
赋值表达式中的类型意外。 ![]() | 调整类型以匹配预期模式。 |
为 ![]() | 您不能更改标注为 |
继承标注为 ![]() | 您不能继承带有 |
重写带有 ![]() | 您不能重写带有 |
函数参数的类型不正确。 ![]() | 将字典传递给 |
为 ![]() | 将
|
在 ![]() | 按照类型定义中指定的方式分配键:
|
装饰函数的使用不正确。 PyCharm 根据装饰器的类型验证装饰函数的类型: ![]() | 根据需要修改装饰器或使用函数返回值的语句。 |
您可以添加 # type: ignore 或 # noqa 注释以抑制类型验证警告或忽略缺失的导入声明。

Python 存根
您可以使用 Python 存根文件 ,使用 Python 3 语法指定类型提示。 无论 解释器 使用的是哪个 Python 版本,这些提示都将在您的 Python 文件中可用。
在以下示例中,来自存根文件( stubs.pyi )的 sample_function 类型提示在 Python 文件( stubs.py )中可用:
如果您正在使用检测到具有存根对应物的包,则会出现以下消息:

您可以安装存根包,忽略此消息并继续使用当前安装的包,或在项目 设置 中禁用此类检查。
使用 Typeshed
Typeshed 是一组为标准 Python 库和各种包提供类型注解的文件。 Typeshed 存根为使用类型提示定义的 Python 类、函数和模块提供定义。 PyCharm 使用此信息来改进代码补全、检查和其他代码洞察功能。
PyCharm 随附 Typeshed 存根。 可用的 Typeshed 存根列表显示在项目视图中的节点 外部库 | <Python interpreter> | Typeshed Stubs 下。
要使用您自己的版本覆盖捆绑的 Typeshed 仓库,请按照以下步骤操作:
将部分或全部存根复制到项目中的某个目录。
通过从目录的上下文菜单中选择 标记目录为 | 源代码根目录 ,将目录标记为源根。
Python skeletons 仓库 https://github.com/JetBrains/python-skeletons 现已被弃用。




















