python的類型標(biāo)注(Type annotations)是python 3.6之后的一個(gè)新版功能驴剔,它的作用是在調(diào)用函數(shù)時(shí)告訴你需要傳遞哪些參數(shù)類型以及輸入輸出所需要的數(shù)據(jù)類型骡技。理解它將非常有益于優(yōu)化你的代碼昙读。
如果我們要表示JSON類型矢赁,如何能清楚有效地表示該類型是個(gè)頭大的問題排嫌,因?yàn)閜ython的typing包沒有關(guān)于json類型的hint对粪。但是我們可以通過一些原生類型組合構(gòu)造來表示芯勘。
以下代碼可以參考:
python3.10之前:
# A few handy JSON types
from typing import Union
JSON = Union[int, str, float, bool, None, dict[str, "JSON"], list["JSON"]]
JSONObject = dict[str, JSON]
JSONList = list[JSON]
python 3.10之后:
# A few handy JSON types
JSON = int | str | float | bool | None | dict[str, "JSON"] | list["JSON"]
JSONObject = dict[str, JSON]
JSONList = list[JSON]
def http_get_sync(url: str) -> JSONObject:
response = requests.get(url)
return response.json()
這里用python的遞歸類提示來表達(dá)JSON這個(gè)數(shù)據(jù)類型箱靴。首先我們定義JSON類型名,它可以接受為int, str, float, bool和str為鍵荷愕,自身JSON類型為值的字典衡怀。這樣就可以實(shí)現(xiàn)對(duì)嵌套字典的遞歸類型提示。 而JSONObject是一組由str和JSON類型組成的字典類型安疗。這種方式可以幫助您在函數(shù)參數(shù)和返回值中清晰地定義嵌套字典的結(jié)構(gòu)抛杨,使代碼更易于理解和維護(hù)。注意上面類型標(biāo)注python 3.10之前和之后有不同的寫法荐类。