PyCharm 中的 Python 2.7 类型提示可调用类型

pse*_*ust 4 type-hinting pycharm python-2.7

我正在尝试在 python 2.7 中使用类型提示,如此处所述

我有一个函数需要一个具有特定签名作为参数的可调用函数(函数),但我不知道如何注释它。

我试过了

def set_function(self, function):
    # type: ((int) -> None) -> None    
Run Code Online (Sandbox Code Playgroud)

但 PyCharm 显示预期的 ')' 和意外的标记错误

我似乎找不到这方面的任何文档...

Mic*_*x2a 7

在 Pycharm 中(或在任何其他理解PEP 484类型提示的工具中)记录可调用的正确方法如下:

from typing import Callable

def set_function(self, function):
    # type: (Callable[[int], None]) -> None
    ...
Run Code Online (Sandbox Code Playgroud)

由于您使用的是 Python 2,因此您需要typing从 PyPi 安装该模块(如果尚未安装)。(typing在 3.5 中被添加到 Python 的标准库中,PyPi 上的模块是向后移植的)。

您可以在Python 文档和mypy文档中找到有关使用输入模块的更多信息。

(如果您不知道,mypy 是一个命令行工具,它也理解 PEP 484 类型提示,并且还会静态分析和类型检查您的代码。它是 Pycharm 内置类型检查器的独立成果。因为 Pycharm 和 mypy 都使用PEP 484 类型,mypy 的文档通常是开始了解有关使用类型提示的更多信息的好地方。)