python3.5以上版本,typing模塊提升代碼健壯性

一 前言

Python是一門弱類型的語言,不少時候咱們可能不清楚函數參數類型或者返回值類型,頗有可能致使一些類型沒有指定方法,在寫完代碼一段時間後回過頭看代碼,極可能忘記了本身寫的函數須要傳什麼參數,返回什麼類型的結果,就不得不去閱讀代碼的具體內容,下降了閱讀的速度,typing模塊能夠很好的解決這個問題。python

二 typing模塊的做用

  • 類型檢查,防止運行時出現參數和返回值類型不符合。
     
  • 做爲開發文檔附加說明,方便使用者調用時傳入和返回參數類型。
     
  • 該模塊加入後並不會影響程序的運行,不會報正式的錯誤,只有提醒。
注意:typing模塊只有在python3.5以上的版本中才能夠使用,pycharm目前支持typing檢查

三 typing模塊的經常使用方式

from typing import List, Tuple, Dict

def test(a: int, string: str, f: float, b: bool) -> Tuple[List, Tuple, Dict, bool]:
    ll=[1,2,3,4]
    tup = (string, a, string)
    dic = {"xxx": f}
    boo = b
    return ll, tup, dic, boo

print(test(12, "lqz", 2.3, False))

注意:

  • 在傳入參數時經過「參數名:類型」的形式聲明參數的類型;app

  • 返回結果經過"-> 結果類型"的形式聲明結果的類型。函數

  • 在調用的時候若是參數的類型不正確pycharm會有提醒,但不會影響程序的運行。spa

  • 對於如list列表等,還能夠規定得更加具體一些,如:「-> List[str]」,規定返回的是列表,而且元素是字符串。code

三 typing經常使用的類型

  • int,long,float: 整型,長整形,浮點型;blog

  • bool,str: 布爾型,字符串類型;開發

  • List, Tuple, Dict, Set:列表,元組,字典, 集合;文檔

  • Iterable,Iterator:可迭代類型,迭代器類型;字符串

  • Generator:生成器類型;get

python天生支持多態,迭代器中的元素可能多種

from typing import List, Union

def func(a: int, string: str) -> List[int or str]:
    list1 = []
    list1.append(a)
    list1.append(string)
    return list1

def get_next_id() -> Union[int, None]:
    return 1
    return None
# 使用or關鍵字表示多種類型,也能夠用Union
相關文章
相關標籤/搜索