python疑問5:位置參數,默認參數,可變參數,關鍵字參數,命名關鍵字參數區別

1.位置參數
位置參數要求調用時傳入函數的參數必須和定義時的位置和個數一致,即一一對應,不可缺省函數

def func(a,b):
    sum = a + b
    return sum
print(func(2,3)) //5
print(func(2)) //報錯

2.默認參數
定義在位置參數後,做用是當參數缺省時,用定義的默認值替代code

def func(a,b=3):
    sum = a + b 
    return sum
print(func(2,4)) //6
print(func(2))  //5

3.可變參數
在tuple或list前加一個*,構造出可變參數。接收任意個參數,包括0個。用於函數參數不肯定的狀況擴展

def func(*args):
    sum = 0
    for x in args:
        sum += x
    return sum 
    
print(func(1,2,3)) //6
//將list或tuple內所有元素做爲可變參數
L = [1,2,3,4]
print(func(*L)) //10

4.關鍵字參數
在dict前加兩個*,構造關鍵字參數。接收任意無限制的參數,用於擴展函數的功能命名

def func(a,b,**kw):
    sum = a+b
    print(a,'+',b,'=',sum,kw)
func(2,3,color="black",phone="vivo")
// Out:2 + 3 = 5 {'color': 'black', 'phone': 'vivo'}

//先組裝dict,再做爲關鍵字參數傳進去
desc = {'color': 'black', 'phone': 'vivo'}
func(2,3,**desc)
// Out:2 + 3 = 5 {'color': 'black', 'phone': 'vivo'}

5.命名關鍵字參數
命名關鍵字參數指定了key,將關鍵字參數作了一個限制。以一個做爲分割。若是已經存在可變參數,那麼命名關鍵字不須要做爲分割word

def func(a,b,*,color):
    sum = a+b
    print(a,'+',b,'=',sum,'color:',color)
func(2,3,color='black') // Out:2 + 3 = 5 color: black
func(2,3,color='black',phone='vivo') //報錯 func() got an unexpected keyword argument 'phone'
//若是已經存在可變參數,那麼命名關鍵字不須要*做爲分割
def func(a,b,*args,color='red'):
    sum = a+b
    print(a,'+',b,'=',sum,args,'color:',color)
func(2,3,color='black') //2 + 3 = 5 () color: black
func(2,3,4,5,color='black') // 2 + 3 = 5 (4, 5) color: black
//命名關鍵字支持默認值
func(2,3,4,5) //2 + 3 = 5 (4, 5) color: red

注意:
參數位置排列順序:位置參數,默認參數,可變參數,命名關鍵字參數,關鍵字參數,dict

相關文章
相關標籤/搜索