開始使用python後發現typing的使用率蠻高的,畢竟是一種注釋,可以提高代碼可讀性,所以要開始學習啦。

這裡的內容會隨著我學習的知識越來越多而增加,並不是一次過學習全部!

特殊形式

typing.Annotated

特殊類型註解形式,用於向註解添加特定於上下文的元數據。

使用註解Annotated[T, x]將元數據x添加到給定類型T。使用Annotated添加的元數據可以被靜態分析工具使用,也可以在運行時使用。在運行時使用的情況下,元數據存儲在__metadata__屬性中。

如果庫或工具遇到註解Annotated[T, x],並且沒有針對這一數據的特殊處理邏輯,這應該忽略該元數據,簡單將註解視為T。

使用Annotated[T, x]作為註解依然允許對T進行靜態類型檢查,因為類型檢查器將簡單地忽略元數據x。因此,Annotated 不同於@no_type_check 裝飾器,後者雖然也可以用在類型註解系統範圍之外添加註解,但是會完全禁用對函數或類的類型檢查。

Annotated[<type>, <metadata>]

範例1

@dataclass
class ValueRange:
	lo:	int
	hi:	int
T1	= Annotated[int, ValueRange(-10,5)]

範例2

name = Annotated[str, "first letter is capital"]
typing.Annotated什麼情況下有用?

當函數庫支持註解,或者以註解為他的功能的一部分。
比如說

1.FastApi用Annotated作為數據驗證

def read_items(q: Annotated[str, Query(max_length=50)])

這代表q一定是個string,並且字數不能超過50
q在FastApi也代表著Query參數,其他還有Body, Path, Headers, Cookies