1. 程式人生 > >Python:函式:關鍵字引數誤區----正確答案:尋找函式申明中,可變引數(*args)後的引數(沒有可變引數*args,就沒有關鍵字引數)

Python:函式:關鍵字引數誤區----正確答案:尋找函式申明中,可變引數(*args)後的引數(沒有可變引數*args,就沒有關鍵字引數)

何為一般關鍵字引數?

在定義函式時,函式體形參列表中,可變引數(*args)後不帶預設值的引數,為呼叫函式時必須賦值的關鍵字引數,即一般的關鍵字引數。

經典誤區(例)

函式體

def getValue(position1, default1 = "預設", *args, keyName1, **kwargs):
    print("postion1:\t" + position1)
    print("default1:\t" + default1)
    print("args:\t\t" + str(args))
    print("keyName1:\t" + keyName1)
print("kwargs\t\t" + str(kwargs))

呼叫(結果類似)

#1
getValue(position1 = "matchPostion1", keyName1 = "matchKeyName1", kwargs1 = "matchKwargs1")
getValue(position1 = "matchPostion1", kwargs1 = "matchKwargs1", keyName1 = "matchKeyName1")

#2
getValue(kwargs1 = "matchKwargs1", position1 = "matchPostion1"
, keyName1 = "matchKeyName1") getValue(keyName1 = "matchKeyName1", position1 = "matchPostion1", kwargs1 = "matchKwargs1") #3 getValue(kwargs1 = "matchKwargs1", keyName1 = "matchKeyName1", position1 = "matchPostion1") getValue(keyName1 = "matchKeyName1", kwargs1 = "matchKwargs1", position1 = "matchPostion1"
) #4 getValue(position1 = "matchPostion1", default1 = "matchDefault1", keyName1 = "matchKeyName1", kwargs1 = "matchKwargs1")

結果

postion1:	matchPostion1
default1:	matchDefault1
args:		()
keyName1:	matchKeyName1
kwargs		{'kwargs1': 'matchKwargs1'}

總結

getValue(position1, default1 = “預設”, *args, keyName1, **kwargs)中, 位置引數………………position1 = “matchPostion1”、 預設引數………………default1 = “matchDefault1”、 關鍵字引數……………keyName1 = “matchKeyName1”、 可變關鍵字引數………kwargs1 = “matchKwargs1” 都可以通過形參變數名賦值的方式傳遞,只有keyName1一個是關鍵引數 所以,在函式宣告的時候,只有在 args 後面的引數才為關鍵字引數 (沒有args,就沒有關鍵字引數)

特徵

函式宣告中,可變引數(*args)後