前言
typing 是在 python 3.5 才有的模塊
前置學習
Python 類型提示:https://www.cnblogs.com/poloyy/p/15145380.html
常用類型提示
https://www.cnblogs.com/poloyy/p/15150315.html
類型別名
https://www.cnblogs.com/poloyy/p/15153883.html
NewType
可以自定義創一個新類型
- 主要用於類型檢查
- NewType(name, tp) 返回一個函數,這個函數返回其原本的值
- 靜態類型檢查器會將新類型看作是原始類型的一個子類
- tp 就是原始類型
實際栗子
# NewType from typing import NewType UserId = NewType('UserId', int) def name_by_id(user_id: UserId) -> str: print(user_id) UserId('user') # Fails type check num = UserId(5) # type: int name_by_id(42) # Fails type check name_by_id(UserId(42)) # OK print(type(UserId(5))) # 輸出結果 42 42 <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.cnblogs.com/poloyy/p/15154008.html
TypeVar 泛型
https://www.cnblogs.com/poloyy/p/15154196.html
Any Type
https://www.cnblogs.com/poloyy/p/15158613.html
Union
https://www.cnblogs.com/poloyy/p/15170066.html
Optional
https://www.cnblogs.com/poloyy/p/15170297.html
