前言
typing
是 Python 的一个标准库模块,它在 Python 3.5 及以上版本中引入。
主要用于提供类型提示(type hints),让代码的可读性更强,并且可以帮助开发工具(如 IDE)提供更好的代码自动补全、类型检查等功能。
但需要注意的是,Python 仍然是一门动态类型语言,这些类型提示并不会在运行时强制类型约束。
变量的声明
1 | from typing import int |
普通参数的声明
1 | def add_numbers(a: int, b: int): |
方法参数声明
固定参数
1 | from typing import Callable |
可变数量参数
1 | from typing import Callable, Any |
这里Callable[..., Any]
中的...
表示接受任意数量和类型的参数,Any
表示返回值可以是任意类型(根据实际传入的函数来定)。
可空函数
1 | from typing import Optional, Literal, Tuple, Callable |
返回值声明
如果函数可能返回None
,可以使用Optional
类型。
1 | from typing import Optional |
各种类型示例
列表
1 | from typing import List |
字典
1 | from typing import Dict |
泛型
1 | from typing import TypeVar, List |
自定义类型
1 | from typing import NewType |
字面量
Literal
类型是从 Python 3.8 版本开始引入的。
它的出现使得在类型提示中能够更精确地指定变量或者函数参数只能取特定的几个字面量值,增强了类型系统对于代码中固定取值情况的表达能力。
在旧版本的 Python 中如果想要实现类似的限制功能,可以需要通过自定义验证函数或者枚举(Enum
)等来实现类似的效果。
1 | from typing import Literal |
综合示例
1 | from typing import Dict, List, Literal, Optional, Tuple |