一、位置參數(shù)、關(guān)鍵字參數(shù)、可變參數(shù)、默認(rèn)參數(shù)的區(qū)別
1、位置參數(shù)
位置參數(shù)是指根據(jù)參數(shù)在函數(shù)定義中的位置進(jìn)行匹配的參數(shù)。在調(diào)用函數(shù)時(shí),必須按照函數(shù)定義的參數(shù)順序依次傳入相應(yīng)的參數(shù)。例如:
def add(x, y):return x + yresult = add(2, 3)print(result) # 輸出 5
在這個(gè)例子中,add()
函數(shù)有兩個(gè)位置參數(shù),分別是x
和y
。在調(diào)用add()
函數(shù)時(shí),必須按照x
和y
的順序依次傳入相應(yīng)的參數(shù)。如果參數(shù)的順序不正確,會(huì)導(dǎo)致函數(shù)返回錯(cuò)誤的結(jié)果。
2、關(guān)鍵字參數(shù)
關(guān)鍵字參數(shù)是指根據(jù)參數(shù)名進(jìn)行匹配的參數(shù)。在調(diào)用函數(shù)時(shí),可以通過(guò)指定參數(shù)名來(lái)傳遞參數(shù),這樣可以不按照參數(shù)的定義順序傳遞參數(shù),避免了因參數(shù)順序不當(dāng)而導(dǎo)致的錯(cuò)誤。例如:
def add(x, y):return x + yresult = add(x=2, y=3)print(result) # 輸出 5
在這個(gè)例子中,add()
函數(shù)的參數(shù)x
和y
都是關(guān)鍵字參數(shù)。在調(diào)用add()
函數(shù)時(shí),我們使用x=2
和y=3
來(lái)指定參數(shù)的值,這樣就不必按照參數(shù)的定義順序傳遞參數(shù)了。
3、可變參數(shù)
可變參數(shù)是指可以接受任意數(shù)量參數(shù)的參數(shù)。在Python中,可變參數(shù)可以通過(guò)在參數(shù)名前加上一個(gè)星號(hào)*
來(lái)定義,這樣函數(shù)就可以接受任意數(shù)量的位置參數(shù)。例如:
def add(*args):total = 0for arg in args:total += argreturn totalresult = add(2, 3, 4)print(result) # 輸出 9
在這個(gè)例子中,add()
函數(shù)的參數(shù)名為args
,前面有一個(gè)星號(hào)*
。這樣,add()
函數(shù)就可以接受任意數(shù)量的位置參數(shù),并將它們存儲(chǔ)在一個(gè)元組中。
4、默認(rèn)參數(shù)
默認(rèn)參數(shù)是指在函數(shù)定義時(shí)就已經(jīng)指定默認(rèn)值的參數(shù)。在調(diào)用函數(shù)時(shí),如果沒(méi)有傳遞該參數(shù)的值,則使用該參數(shù)的默認(rèn)值。例如:
def add(x, y=0):return x + yresult1 = add(2)result2 = add(2, 3)print(result1) # 輸出 2print(result2) # 輸出 5