Python可选的类型声明

在Python 3.6以上的版本中,Python已经获得了非常全面的类型声明的支持:

函数注解:

def add_int(a: int, b: 'b should be int', c: int=0) -> int:

    return a + b + c

函数注解将被存储在__annotations__ 中,类似于enforce 模块可以对有注释的变量进行强制检查。如例子中所展现的,形参的注解可以是任意形式的,->将表明函数的返回类型。

变量声明:

primes: List[int] = []

x = 'HelloWorld'  # type: str

当用户在声明一个变量的时候,可以同时声明它的结构。在Go语言中,只有全局变量需要被如此声明。个人觉得这是个不错的规范,因为全局变量将在很多地方被使用,它们的结构可能是至关重要的,而局部变量通常仅在内部使用,不声明结构完全可以接受,不过值得注意的是,当局部变量在一个嵌套较深的代码段的顶部,以及局部变量将进入闭包中的时候,这个局部变量如果声明一下结构可能会有些益处。

Python的类型声明大体上是非常自由的,当你尝试编写它的时候,会发现这家伙很容易脱缰,导致失控。在这一点上Python官方提供了一种解决方案。

目前在Python标准库中,有一个暂不稳定的库:typing。typing提供了最基本的声明类型,用户可以像引入普通库一样将其中的类型引入文档中使用,同时提供了NewType()函数让用户能够很方便地创建自定义类型。此模块的完整规范记录在PEP484中。

目前typing已经在很多的官方库中使用了,当你读到看起来像是TypeScript的代码的时候,不用怀疑,那就是应用了typing的代码。

typing文档:https://docs.python.org/zh-cn/3/library/typing.html

你可能感兴趣的:(Python可选的类型声明)