在 PyCharm 中进行类型提示
PyCharm 提供多种方式,帮助检查与验证脚本中对象的类型。 PyCharm 支持在函数注解和类型注释中使用 类型提示 ,采用 typing 模块以及由 PEP 484 定义的格式。
添加类型提示
尽管 PyCharm 支持 PEP 484 中用于添加类型的所有方法,通过意图操作使用类型提示是最便捷的方式。 根据您使用的解释器,类型将作为注解(Python 3)或作为注释(Python 2)添加:
选择一个代码元素。
按 Alt+Enter。
选择 为 ... 添加类型提示。
按 Enter 完成操作,或在需要时编辑类型。
示例 | 意图操作 | 注解的结果代码(Python 3) |
|---|---|---|
变量 | ![]() | ![]() |
函数 | ![]() | ![]() |
类属性 | ![]() | ![]() |
示例 | 意图操作 | 注释的结果代码(Python 2) |
|---|---|---|
变量 | ![]() | ![]() |
函数 | ![]() | ![]() |
类属性 | ![]() | ![]() |
您还可以使用 Python 存根 来指定变量、函数和类字段的类型。
使用注解指定返回类型
您可以使用 Python 3 注解来标注函数的返回类型。 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 解释器> | Typeshed 存根 下。
要使用您自己的版本覆盖随附的 Typeshed 存储库,请按以下步骤操作:
将部分或全部存根复制到项目中的某个目录。
在该目录的上下文菜单中选择 标记目录为 | 源代码根目录 ,将该目录标记为源根。
Python skeletons 存储库 https://github.com/JetBrains/python-skeletons 现已弃用。




















