目前為止,我們使用函數(shù)時(shí)所用的參數(shù)都是位置參數(shù),即傳入函數(shù)的實(shí)際參數(shù)必須與形式參數(shù)的數(shù)量和位置對(duì)應(yīng)。而本節(jié)將介紹的關(guān)鍵字參數(shù),則可以避免牢記參數(shù)位置的麻煩,令函數(shù)的調(diào)用和參數(shù)傳遞更加靈活方便。
關(guān)鍵字參數(shù)是指使用形式參數(shù)的名字來(lái)確定輸入的參數(shù)值。通過(guò)此方式指定函數(shù)實(shí)參時(shí),不再需要與形參的位置完全一致,只要將參數(shù)名寫正確即可。因此,Python 函數(shù)的參數(shù)名應(yīng)該具有更好的語(yǔ)義,這樣程序可以立刻明確傳入函數(shù)的每個(gè)參數(shù)的含義。
例如如下程序:
- # 定義一個(gè)函數(shù)
- def girth(width , height):
- print("width: ", width)
- print("height: ", height)
- return 2 * (width + height)
- # 傳統(tǒng)調(diào)用函數(shù)的方式,根據(jù)位置傳入?yún)?shù)
- print(girth(3.5, 4.8))
- # 根據(jù)關(guān)鍵字參數(shù)來(lái)傳入?yún)?shù)
- print(girth(width = 3.5, height = 4.8))
- # 使用關(guān)鍵字參數(shù)時(shí)可交換位置
- print(girth(height = 4.8, width = 3.5))
- # 部分使用關(guān)鍵字參數(shù),部分使用位置參數(shù)
- print(girth(3.5, height = 4.8))
上面程序定義了一個(gè)簡(jiǎn)單的 girth() 函數(shù),該函數(shù)包含 width、height 兩個(gè)參數(shù),該函數(shù)與前面定義的函數(shù)并沒(méi)有任何區(qū)別。
接下來(lái)在調(diào)用該函數(shù)時(shí),既可使用傳統(tǒng)的根據(jù)位置參數(shù)來(lái)調(diào)用(如上面程序中第 7 行代碼所示),也可根據(jù)關(guān)鍵字參數(shù)來(lái)調(diào)用(如上面程序中第 9 行代碼所示),在使用關(guān)鍵字參數(shù)調(diào)用時(shí)可交換參數(shù)的位置(如上面程序中第 11 行代碼所示〕,還可混合使用位置參數(shù)和關(guān)鍵字參數(shù)(如上面程序中第 13 行代碼所示)。
需要說(shuō)明的是,如果希望在調(diào)用函數(shù)時(shí)混合使用關(guān)鍵字參數(shù)和位置參數(shù),則關(guān)鍵字參數(shù)必須位于位置參數(shù)之后。換句話說(shuō),在關(guān)鍵字參數(shù)之后的只能是關(guān)鍵字參數(shù)。例如如下代碼是錯(cuò)誤的:
# 位置參數(shù)必須放在關(guān)鍵字參數(shù)之前,下面代碼錯(cuò)誤
print(girth(width = 3.5, 4.8))
運(yùn)行上面代碼,將會(huì)提示如下錯(cuò)誤:
SyntaxError: positional argument follows keyword argument
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)
點(diǎn)擊舉報(bào)。