如果想讓一個函數能接受任意個參數,我們就可以定義一個可變參數:
def fn(*args):
print args
可變參數的名字前面有個 * 號,我們可以傳入0個、1個或多個參數給可變參數:
>>> fn()
()
>>> fn('a')
('a',)
>>> fn('a', 'b')
('a', 'b')
>>> fn('a', 'b', 'c')
('a', 'b', 'c')
可變參數也不是很神秘,Python解釋器會把傳入的一組參數組裝成一個tuple傳遞給可變參數,因此,在函數內部,直接把變量 args 看成一個 tuple 就好了。
定義可變參數的目的也是為了簡化調用。假設我們要計算任意個數的平均值,就可以定義一個可變參數:
def average(*args):
...
這樣,在調用的時候,可以這樣寫:
>>> average()
0
>>> average(1, 2)
1.5
>>> average(1, 2, 2, 3, 4)
2.4
任務
請編寫接受可變參數的 average() 函數。
?不會了怎么辦
可變參數 args 是一個tuple,當0個參數傳入時,args是一個空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)
