根據inspect模塊官文文檔中關於函數參數類型的相關說明,python函數參數共有五種類型,按順序分別為:POSITIONAL_ONLY、POSITIONAL_OR_KEYWORD、VAR_POSITIONAL、KEYWORD_ONLY、VAR_KEYWORD。如圖: POSITIONAL_ONL ...
根據inspect模塊官文文檔中關於函數參數類型的相關說明,python函數參數共有五種類型,按順序分別為:POSITIONAL_ONLY、POSITIONAL_OR_KEYWORD、VAR_POSITIONAL、KEYWORD_ONLY、VAR_KEYWORD。如圖:
POSITIONAL_ONLY:參數值必須以位置參數的形式傳遞。python沒有明確的語法來定義POSITIONAL_ONLY類型的參數,但很多內建或擴展模塊的函數中常常會接收這種參數類型,實際使用中不多見,這裡暫不考慮。
POSITIONAL_OR_KEYWORD:這種類型的參數在函數調用時既可以使用位置傳遞,也可以使用關鍵字傳遞,是最常見的一種參數類型。例如:
上圖中的參數a,b都是POSITIONAL_OR_KEYWORD類型,其中b為預設值參數,必須定義在非預設值參數後面。
VAR_POSITIONAL:即 *args 參數,屬於收集參數的一種,可以接收0個或多個位置參數。args是一個tuple,函數體可以直接從args中提取傳入的參數值。例如:
上圖中,*c為VAR_POSITIONAL參數,可傳遞的參數值類型沒有限制。註意:如果函數調用時傳遞了VAR_POSITIONAL參數,則POSITIONAL_OR_KEYWORD類型參數必須以位置參數的形式傳遞。
KEYWORD_ONLY:關鍵字參數,函數調用時必須以關鍵字的形式傳遞參數值。例如:
上圖中,d,e,f為KEYWORD_ONLY參數。其中e為有預設值的關鍵字參數,函數調用時,關鍵字參數間的順序可以打亂,但必須在位置參數後面。
VAR_KEYWORD:即 **kwargs 參數,屬於收集參數的一種,可以接收0個或多個關鍵字參數。kwargs是一個dict,函數體可以直接從kwargs中提取傳入的參數。例如:
上圖中,**g為VAR_KEYWORD參數,同樣,關鍵字參數順序不限,但必須在位置參數後面。
以上。