如果想讓一個(gè)函數(shù)能接受任意個(gè)參數(shù)逐纬,我們就可以定義一個(gè)可變參數(shù):
deffn(*args):print args
可變參數(shù)的名字前面有個(gè)*號(hào)御雕,我們可以傳入0個(gè)矢沿、1個(gè)或多個(gè)參數(shù)給可變參數(shù):
>>> fn()
()
>>> fn('a')
('a',)
>>> fn('a', 'b')
('a', 'b')
>>> fn('a', 'b', 'c')
('a', 'b', 'c')
可變參數(shù)也不是很神秘,Python解釋器會(huì)把傳入的一組參數(shù)組裝成一個(gè)tuple傳遞給可變參數(shù)酸纲,因此捣鲸,在函數(shù)內(nèi)部,直接把變量args看成一個(gè)tuple就好了闽坡。
定義可變參數(shù)的目的也是為了簡(jiǎn)化調(diào)用栽惶。假設(shè)我們要計(jì)算任意個(gè)數(shù)的平均值,就可以定義一個(gè)可變參數(shù):
defaverage(*args):...
這樣疾嗅,在調(diào)用的時(shí)候外厂,可以這樣寫:
>>> average()
0
>>> average(1, 2)
1.5
>>> average(1, 2, 2, 3, 4)
2.4