首頁技術(shù)文章正文

python不定長參數(shù)有啥用【Python培訓(xùn)】

更新時(shí)間:2022-09-06 來源:黑馬程序員 瀏覽量:

IT培訓(xùn)班

  在Python中,通常在定義一個(gè)函數(shù)時(shí),若希望函數(shù)能夠處理的參數(shù)個(gè)數(shù)比當(dāng)初定義的參數(shù)個(gè)數(shù)多,此時(shí)可以在函數(shù)中使用不定長參數(shù)。其基本的語法格式如下:

def 函數(shù)名([formal_args,] *args, **kwargs):
    "函數(shù)_文檔字符串"
    函數(shù)體
    return 表達(dá)式

  在上述格式中,函數(shù)共有3個(gè)參數(shù)。其中,formal_args為形參(也就是前面所用的參數(shù),如a,b),*args和**kwargs為不定長參數(shù)。當(dāng)調(diào)用函數(shù)的時(shí)候,函數(shù)傳入的參數(shù)個(gè)數(shù)會優(yōu)先匹配formal_args參數(shù)的個(gè)數(shù)。如果傳入的參數(shù)個(gè)數(shù)和formal_args參數(shù)的個(gè)數(shù)相同,不定長參數(shù)會返回空的元組或字典;如果傳入?yún)?shù)的個(gè)數(shù)比formal_args參數(shù)的個(gè)數(shù)多,可以分為如下兩種情況:

  (1)如果傳入的參數(shù)沒有指定名稱,那么*args會以元組的形式存放這些多余的參數(shù);

  (2)如果傳入的參數(shù)指定了名稱,如m=1,那么**kwargs會以字典的形式存放這些被命名的參數(shù),如{m:1}

  為了大家更好地理解,先通過一個(gè)簡單的案例進(jìn)行演示,具體如例6-4所示。

  例6-4 不定長參數(shù)

def test(a, b, *args):
    print(a)
    print(b)
    print(args)
test(11, 22)

  在例6-4中,第1~4行代碼定義了帶有多個(gè)參數(shù)的test函數(shù)。其中,args為不定長參數(shù)。第5行代碼調(diào)用test函數(shù)時(shí)只傳入了兩個(gè)參數(shù)11和22,說明11和22會按照從左向右的順序依次匹配test函數(shù)定義時(shí)的參數(shù)a和b,而args參數(shù)因?yàn)闆]有接收到數(shù)據(jù),所以其為一個(gè)空元祖。

  程序的運(yùn)行結(jié)果如圖6-4所示。

1662444700927_不定長參數(shù).jpg

  圖6-4 運(yùn)行結(jié)果

分享到:
在線咨詢 我要報(bào)名
和我們在線交談!