在python函式中,可以定義可變引數,顧名思義,可變引數就是,傳入的引數是可變的
例如,給定一組數字a,b,c... 請計算a2 + b2 + c2 + ……
要定義出這個函式,我們必須確定輸入的引數。由於引數個數不確定,我們首先想到可以把a,b,c....作為一個list或者tuple傳進來,這樣,函式可以定義如下:
def calc(numbers): sum=0 for n in numbers: sum=sum+n*n return sum
呼叫的時候先組裝出一個list或者tuple
print calc([1,2,3]) #14 print calc((1,2,3,4)) #30
如果利用可變引數,呼叫函式的方式可以簡化成這樣:
calc([1,2,3]) #14 calc((1,2,3,4)) #30
把函式的引數改為可變引數:
def calc2(*numbers): sum=0 for n in numbers: sum = sum + n * n return sum
定義可變引數和一個list活tuple引數相比,僅僅在引數前面加了一個*號,在函式內部,引數numbers接收到的是一個tuple,因此函式程式碼完全不變,呼叫該函式時,可以傳入任意個引數,包括0個引數
print calc2(1, 2) #5 print calc2() #0
如果已經有一個list或者tuple,要呼叫一個可變引數,可以這樣做:
nums=[1,2,3] print calc2(nums[0],nums[1],nums[2]) #14
這樣寫太繁瑣,python允許你在list或者tuple前面加上*號,把list或者tuple的元素變成可變引數穿進去:
print calc2(*nums) #14
參考:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001431752945034eb82ac80a3e64b9bb4929b16eeed1eb9000