Python:函式:關鍵字引數誤區----正確答案:尋找函式申明中,可變引數(*args)後的引數(沒有可變引數*args,就沒有關鍵字引數)
阿新 • • 發佈:2018-12-17
何為一般關鍵字引數?
在定義函式時,函式體形參列表中,可變引數(*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)後