如果想讓一個(gè)函數(shù)能接受任意個(gè)參數(shù),我們就可以定義一個(gè)可變參數(shù):
def fn(*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ù)的目的也是為了簡化調(diào)用。假設(shè)我們要計(jì)算任意個(gè)數(shù)的平均值穆律,就可以定義一個(gè)可變參數(shù):
def average(*args):
...
這樣,在調(diào)用的時(shí)候崇众,可以這樣寫:
>>> average()
0
>>> average(1, 2)
1.5
>>> average(1, 2, 2, 3, 4)
2.4
任務(wù)
請編寫接受可變參數(shù)的 average() 函數(shù)滤蝠。
可變參數(shù) args 是一個(gè)tuple,當(dāng)0個(gè)參數(shù)傳入時(shí),args是一個(gè)空tuple憨琳。
參考代碼:
def average(*args):
sum = 0.0
if len(args) == 0:
return sum
for x in args:
sum = sum + x
return sum / len(args)
print average()
print average(1, 2)
print average(1, 2, 2, 3, 4)