在PEP 484中,包含typing模块的类型提示已添加到Python 3中。在Python 2中有什么方法可以做到这一点?我能想到的就是有一个装饰器来添加到检查类型的方法中,但这将在运行时失败,并且不会像提示所允许的那样被较早地捕获。
typing
根据 Python 2.7的建议语法和 定义类型提示的PEP 484中的 跨代码 ,存在与Python 2.7兼容的另一种语法。但是,它不是强制性的,因此我不知道它的支持程度如何,而是引用PEP:
某些工具可能希望在必须与Python 2.7兼容的代码中支持类型注释。为此,该PEP具有建议的(但不是强制性的)扩展名,其中功能注释位于#类型:注释中。这样的注释必须放在函数头之后(在文档字符串之前)。一个示例:以下Python 3代码: def embezzle(self, account: str, funds: int = 1000000, *fake_receipts: str) -> None: “”“Embezzle funds from account using fake receipts.”“” 等效于以下内容: def embezzle(self, account, funds=1000000, *fake_receipts): # type: (str, int, *str) -> None """Embezzle funds from account using fake receipts.""" <code goes here>
某些工具可能希望在必须与Python 2.7兼容的代码中支持类型注释。为此,该PEP具有建议的(但不是强制性的)扩展名,其中功能注释位于#类型:注释中。这样的注释必须放在函数头之后(在文档字符串之前)。一个示例:以下Python 3代码:
def embezzle(self, account: str, funds: int = 1000000, *fake_receipts:
str) -> None: “”“Embezzle funds from account using fake receipts.”“”
等效于以下内容:
def embezzle(self, account, funds=1000000, *fake_receipts): # type: (str, int, *str) -> None """Embezzle funds from account using fake receipts.""" <code goes here>
要获得mypy支持,请参阅 类型检查Python 2代码 。
mypy