Python模組分析 第3節 typing模組

2021-09-13 00:27:11 字數 1807 閱讀 9970

python模組分析:第2節-hashlib加密模組

python模組分析:第4節-logging日誌模組

python是一門弱型別的語言,很多時候我們可能不清楚函式引數型別或者返回值型別,很有可能導致一些型別沒有指定方法,typing模組可以很好的解決這個問題。

該模組加入並不會影響程式的執行,不會報正式的錯誤,只有提醒。

typing模組只有在python3.5以上的版本中才可以使用,pycharm目前支援typing檢查

型別檢查,防止執行時出現引數和返回值型別不符合的問題。

作為開發文件附件說明,方便使用者呼叫時傳入和返回引數型別。

先看例項**:

from typing import list,tuple,dict

def add(a:int,string:str,f:float,b:bool)->tuple[list,tuple,dict,bool]:

list1=list(range(a))

tup=(string,string,string)

d=bl=b

return list1,tup,d,bl

if __name__ == '__main__':

print(add(5,'mark',183.1,false))

執行結果:

([0, 1, 2, 3, 4], ('mark', 'mark', 'mark'), , false)
說明:

在傳入引數時,通過「引數名:型別」的形式宣告引數的型別;

返回結果通過「->結果型別」的形式宣告結果的型別

在呼叫的時候如果引數的型別不正確pycharm會有提醒,但不會影程式的執行。

對於如list列表等,還可以規定更加具體一些,如「->list[str]」,規定返回的是列表,並且元素是字串。

int,long,float:整型,長整型,浮點型

bool,str:布林型,字串型別

list,tuple,dict,set:列表,元組,字典,集合

iterable,iterator:可迭代器,迭代器型別

generator:生成器型別

由於python天生支援多型,迭代器中的元素可能有多種。

**例項:

from typing import list, tuple, dict

def add(a: int, string: str, f: float, b: bool or str) -> tuple[list, tuple, dict, str or bool]:

list1 = list(range(a))

tup = (string, string, string)

d =

bl = b

return list1, tup, d, bl

if __name__ == '__main__':

print(add(5, 'mark', 183.1, false))

print(add(5, 'mark', 183.1, 'false'))

執行結果(跟不用typing無異):

([0, 1, 2, 3, 4], ('mark', 'mark', 'mark'), , false)

([0, 1, 2, 3, 4], ('mark', 'mark', 'mark'), , 'false')

python模組分析:第2節-hashlib加密模組

python模組分析:第4節-logging日誌模組

第10 3節 Python匯入模組能否取消匯入?

模組匯入後,是否可以取消匯入?實際上當模組匯入後,是無法逆向還原到匯入前的狀態的,但是可以利用 del 模組名 進行匯入模組的刪除,此時的刪除只是刪除了匯入模組對應的模組變數名,刪除後在呼叫時找不到模組了,但並沒有真正刪除整個匯入模組。為什麼這麼說呢?這是因為刪除後與刪除前python系統內相關的處...

第10課第3節 核心啟動流程分析之Makefile

1.linux核心makefile檔案分類 config 配置檔案,由其決定生成那些檔案,供原始碼使用的標頭檔案,autoconfig.h及供makefile使用的檔案,auto.conf scripts makefile.makefile的通用規則 指令碼等 kbuild makefiles 各級...

第10 4節 Python模組的弱封裝機制

一 引言 python模組可以為呼叫者提供模組內成員的訪問和呼叫,但某些情況下,因為某些成員可能有特殊訪問規則等原因,並不適合將模組內所有成員都提供給呼叫者訪問,此時模組可以類似類的封裝機制類似的模式提供一定的內部成員保護。模組內的內部成員封裝機制有兩種,一種是定義類似類的私有成員,二是類似類的 s...