PyCharm 提供了多种方法来帮助检查和检查脚本中对象的类型。PyCharm 支持使用模块和PEP 484定义的格式在函数注释和类型注释中进行类型提示。typing
尽管 PyCharm 支持PEP 484中支持的所有添加类型的方法,但通过意图操作使用类型提示是最方便的方法。根据您使用的解释器,类型被添加为注释 (Python 3) 或注释 (Python 2)。
选择一个代码元素。
按Alt+Enter。
选择为 ... 添加类型提示。
按下Enter以完成操作或在适当的情况下编辑类型。
例子 | 意图行动 | 注释的结果代码(Python 2) | 注释的结果代码(Python 3) |
---|---|---|---|
变量 | ![]() | ![]() | ![]() |
功能 | ![]() | ![]() | ![]() |
类属性 | ![]() | ![]() | ![]() |
使用# type:
注释指定局部变量和属性的类型:
对于基于注释的类型提示,PyCharm 建议使用意图操作,允许您将基于注释的类型提示转换为变量注释。此意图的名称为Convert to variable annotation,其工作方式如下:
前 | 后 |
---|---|
从输入 import List, Optional xs = [] # type: List[Optional[str]]
|
从输入 import List, Optional xs: List[Optional[str]] = []
|
每当您应用类型提示时,PyCharm 都会根据支持的 PEP检查类型是否正确使用。如果出现使用错误,则会显示相应的警告并建议建议的操作。以下是验证示例。
验证错误 | 建议的行动 |
---|---|
类型声明的重复。 ![]() | 删除任一类型声明。 |
类型声明中的参数数量与函数参数的数量不同。 ![]() | 调整参数的数量。 |
带解包的类型注释与对应的目标不匹配。 ![]() | 检查目标格式并相应地修改类型注释。 |
参数的语法不正确 ![]() | 使用建议的格式并添加所需的括号来包装 |
赋值表达式中的意外类型。 ![]() | 对齐类型以匹配预期的模式。 |
为 ![]() | 您不能更改 |
继承一个 ![]() | 你不能继承一个 |
函数参数的类型不正确。 ![]() | 使用 |
类的错误使用 ![]() | 参考
|
装饰方法的类型不正确。PyCharm 可以根据装饰器的类型以及装饰器的类型提示来验证装饰方法的类型: ![]() | 在此示例中,使用建议的类型, |
您可以添加# type: ignore
注释来禁止类型验证警告或缺少导入语句。
由于 PyCharm 支持Python 存根文件,您可以使用 Python 3 语法为 Python 2 和 3 指定类型提示。
如果存根文件中记录了任何类型提示,它们将在使用这些存根的代码中可用。例如,以下类型提示some_func_2
在 Python 代码中变为可用:
如果您正在使用检测到存根模拟的软件包,将显示以下消息:
您可以安装存根包,忽略此消息并继续使用当前安装的包,甚至可以在项目Settings/Preferences中禁用相应的检查。
Typeshed是一组带有用于标准 Python 库和各种包的类型注释的文件。Typeshed 存根为使用类型提示定义的 Python 类、函数和模块提供定义。PyCharm 使用此信息来更好地完成代码、检查和其他代码洞察功能。
PyCharm 正在切换到Typeshed,这是 Python 存根的通用存储库。与 PyCharm 捆绑的 Typeshed 存根显示在节点External Libraries |下的项目视图中。<Python 解释器> | 排版存根。请注意,PyCharm 当前仅使用少数捆绑存根(即builtins.pyi
、typing.pyi
和其他几个)。
将部分或全部存根复制到项目中的目录中。
通过选择将目录标记为 |将目录标记为源根目录 从目录的上下文菜单中获取Root 。
Python 骨架存储库https://github.com/JetBrains/python-skeletons现在已弃用。