python位置參數、默認參數、關鍵字參數、可變參數的區別


實參和形參

 

 

 

一、位置參數

位置參數:按順序定義的參數,包涵兩個維度實參和形參,需要從兩個角度去看

1.在定義函數時,按照從左到右的順序依次定義形參,稱為位置形參

 

 

 

2.在調用函數時,按照從左到右的順序依次定義實參,稱為位置實參

#coding = utf-8
def print_hello(name,age,sex):
#name,age,sex位置形參
   print('Name:%s Age:%s Sex:%s' %(name,age,sex))
 #'Muse',26,'男' 位置實參 
print_hello('Muse',26,'')

注:位置實參和位置形參必須一一對應,切一個參數都不可以少

二、關鍵字參數

用於函數調用,通過“鍵-值”形式加以指定。可以讓函數更加清晰、容易使用,同時也清除了參數的順序需求。

 

 

 

#coding = utf-8
def print_hello(name,age,sex):

   print('Name:%s Age:%s Sex:%s' %(name,age,sex))
#關鍵字參數sex='male',name='lili',age=18
print_hello(sex='male',name='lili',age=18)

三、默認參數

用於定義函數,為參數提供默認值,調用函數時可傳可不傳該默認參數的值,如果不傳就取定義時候的值,傳了改變為新的值

 

#coding = utf-8
def print_hello(name,age,sex = '' ):
#sex = '女' 為默認參數
   print('Name:%s Age:%s Sex:%s' %(name,age,sex))
print_hello('Muse',26,'')

注:1.關鍵字參數和默認參數的區別:關鍵字參數是在調用的時候以key = value的形式進行傳值的,默認參數是在定義的時候

2.默認參數的值通常應設為不可變類型

3.定義函數的時候,默認參數必須在位置參數之后

四、可變長度的參數

1.可變長度的位置參數

在最后一個形參名前加*,溢出的位置參數都會被接收,以元組的形式保存下來賦值給該形參

def foo(x,y,z=1,*args): #在最后一個形參名args前加*號
    print(x)
    print(y)
    print(z)
    print(args)
foo(1,2,3,4,5,6,7)

2.可變長度的關鍵字參數

在最后一個形參名前面加**,調用函數時,溢出的關鍵字參數都會被接收,以字典的形式保存下來賦值給該形參

def foo(x,**kwargs): #在最后一個參數kwargs前加**
   print(x)        
   print(kwargs)   

foo(x=1,y=2,z=3) #溢出的關鍵字實參y=2,z=3都被**接收,以字典的形式保存下來,賦值給kwargs
{'z': 3, 'y': 2}

 

3.解包裹(*和**)

1)在傳遞元組時,讓元祖的每一個元素對應一個位置參數

 

def print_hello(name, sex):
    print name, sex

# args = ('tanggu', '男')
#兩個形參一個實參,運行的時候會解包為一一對應
# print_hello(*args)
#運行結果
# tanggu 男

 

 

 

2)在傳遞字典時,讓字典的每個鍵值對作為一個關鍵字參數傳遞給函數

def print_hello(kargs):
    print kargs

kargs = {'name': 'tanggu', 'sex', u''}
print_hello(**kargs)
#運行結果
{'name': 'tanggu', 'sex', u''}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM