前言
typing 是在 python 3.5 才有的模块
前置学习
Python 类型提示:https://www.cnblogs.com/poloyy/p/15145380.html
常用类型提示
https://www.geek-share.com/detail/2840288720.html
类型别名
https://www.cnblogs.com/poloyy/p/15153883.html
NewType
可以自定义创一个新类型
- 主要用于类型检查
- NewType(name, tp) 返回一个函数,这个函数返回其原本的值
- 静态类型检查器会将新类型看作是原始类型的一个子类
- tp 就是原始类型
实际栗子
# NewTypefrom typing import NewTypeUserId = NewType(\'UserId\', int)def name_by_id(user_id: UserId) -> str:print(user_id)UserId(\'user\') # Fails type checknum = UserId(5) # type: intname_by_id(42) # Fails type checkname_by_id(UserId(42)) # OKprint(type(UserId(5)))# 输出结果4242<class \'int\'>
可以看到 UserId 其实也是 int 类型
类型检查
使用 UserId 类型做算术运算,得到的是 int 类型数据
# \'output\' is of type \'int\', not \'UserId\'output = UserId(23413) + UserId(54341)print(output)print(type(output))# 输出结果77754<class \'int\'>
Callable
https://www.geek-share.com/detail/2840288660.html
TypeVar 泛型
https://www.cnblogs.com/poloyy/p/15154196.html
Any Type
https://www.cnblogs.com/poloyy/p/15158613.html
Union
https://www.geek-share.com/detail/2840537300.html
Optional
https://www.geek-share.com/detail/2840542100.html