Python 函式(可變引數)

記憶殘留發表於2017-07-17

在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

 

相關文章