🍖typing 模塊

引入

參考官方文檔 typing3.5 版本的新功能, Python 運行時不強制執行函數和變量類型註解, 但咱們寫完代碼一段時間後再回來看咱們的代碼, 可能就忘記了本身所寫的函數須要傳什麼參數、返回什麼類型的結果, 又得去閱讀代碼, 這樣就大大下降了開發的效率, 而 typing 模塊的出現就很好的解決了這個問題html

一. typing 的做用

  • 類型檢查,防止運行時出現參數和返回值類型不符合
  • 做爲開發文檔附加說明,方便使用者調用時傳入和返回參數類型
  • 該模塊加入後並不會影響程序的運行,不會報正式的錯誤,只有提醒

二. typing 經常使用的類型

  • int, long, float : 整型, 長整形, 浮點型
  • bool, str : 布爾型, 字符串類型
  • List, Tuple, Dict, Set : 列表, 元組, 字典, 集合
  • Iterable, Iterator : 可迭代類型, 迭代器類型
  • Generator :生成器類型

三. typing 模塊的經常使用方式

1.簡單的使用方式

def add(name:str,age:int=22)->str:
    return f"名字:{name} 年齡:{age}"

print(add("派大星"))  # 名字:派大星 年齡:22

2.類型檢查說明

  • 在傳入參數時經過 [參數名] : [類型] 的形式聲明參數的類型
  • 返回結果經過 ->[結果類型] 的形式聲明結果的類型
  • 在調用的時候若是參數的類型不正確pycharm會有提醒,但不會影響程序的運行
  • 對於如 list ,tuple...等,還能夠規定得更加具體一些,如:-> List[str], 規定返回的是列表,而且元素是字符串

3.比較複雜一點點的使用方式

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

1.簡單類型別名示例

from typing import List

Li = List[str]  # 這裏 Li 和 List[str] 的意義是相同的
def add(name:str,age:int)->Li:
    return [name]

print(add("shawn",22))  # ['shawn'] (列表類型只支持一個元素, 否則報錯)

2.複雜的類型別名示例

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函數

相關文章
相關標籤/搜索