除了默認參數,Python函數還接收一種參數叫做可變參數,可變參數即任意個參數的意思,可變參數通常使用*args
來表示。
def func(*args): print('args length = {}, args = {}'.format(len(args), args)) func('a') # ==> args length = 1, args = ('a',) func('a', 'b') # ==> args length = 2, args = ('a', 'b') func('a', 'b', 'c') # ==> args length = 3, args = ('a', 'b', 'c')
注意,在使用上,Python會把可變參數定義為一個tuple,所以在函數內部,把可變參數當作tuple來使用就可以了,比如可以通過位置下標取出對應的元素等。
定義可變參數的目的也是為了簡化調用。假設我們要計算任意個數的平均值,就可以定義一個可變參數:
def average(*args): sum = 0 for item in args: sum += item avg = sum / len(args) return avg
這樣,在調用的時候,我們就可以這樣寫:
average(1, 2) # ==> 1.5 average(1, 2, 2, 3, 4) # ==> 2.4 average() # 報錯 Traceback (most recent call last): ZeroDivisionError: division by zero
在執行average()
的時候,卻報錯了,這是因為在使用可變參數時,沒有考慮周全導致的,因為可變參數的長度可能是0,當長度為0的時候,就會出現除0錯誤。因此需要添加保護的邏輯,這是同學在使用過程中需要特別注意的。
請完善average()函數,使得當可變參數長度為0的時候,也能正確返回結果。
參考答案:
def average(*args): sum = 0 if len(args) == 0: return sum for item in args: sum += item avg = sum / len(args) return avg
請驗證,完成請求
由于請求次數過多,請先驗證,完成再次請求
打開微信掃碼自動綁定
綁定后可得到
使用 Ctrl+D 可將課程添加到書簽
舉報