參考官方文檔 typing 是 3.5 版本的新功能, Python 運行時不強制執行函數和變量類型註解, 但咱們寫完代碼一段時間後再回來看咱們的代碼, 可能就忘記了本身所寫的函數須要傳什麼參數、返回什麼類型的結果, 又得去閱讀代碼, 這樣就大大下降了開發的效率, 而 typing 模塊的出現就很好的解決了這個問題html
def add(name:str,age:int=22)->str: return f"名字:{name} 年齡:{age}" print(add("派大星")) # 名字:派大星 年齡:22
[參數名] : [類型]
的形式聲明參數的類型->[結果類型]
的形式聲明結果的類型-> List[str]
, 規定返回的是列表,而且元素是字符串from typing import List,Tuple,Dict def add(name:str,age:int,height:float,sex:bool=True)->Tuple[List,Tuple,Dict,bool]: list1 = [name,age,height,sex] tuple1 = [1,2,3,4] dic1 = {"name":name,"age":age} return list1,tuple1,dic1,sex print(add("派大星",22,1.72,True)) # (['派大星', 22, 1.72, True], [1, 2, 3, 4], {'name': '派大星', 'age': 22}, True)
把類型賦給別名,就能夠定義類型別名, 類型別名適用於簡化複雜的類型簽名python
from typing import List Li = List[str] # 這裏 Li 和 List[str] 的意義是相同的 def add(name:str,age:int)->Li: return [name] print(add("shawn",22)) # ['shawn'] (列表類型只支持一個元素, 否則報錯)
from typing import List,Tuple,Dict People = Tuple[str,int] Other = Dict[str,int] Info = Tuple[People,Other] def add(name:str,info:Info)->None: # 這種寫法等同於下面的寫法 ... def add2(name:str,info:Tuple[Tuple[str,int],Dict[str,int]])->None: ...
官方文檔 : https://docs.python.org/zh-cn/3/library/typing.html#module-typing函數