Python函數參數類型

來源:互聯網
上載者:User

函數的參數

定義函數(參數):

普通參數,預設參數,可變參數(可變位置參數,可變關鍵字參數),keyword-only 參數

調用函數(傳參):

位置參數,關鍵字參數,參數結構(位置參數解構,關鍵字參數解構)


普通參數 x,y:

def add(x,y)

  return x + y


預設參數  x=1:

def inc(base,x =1):

return base +x

inc(3)

4

inc(3,2)

5

參數可以有預設值, 但當一個參數有預設值時,調用時如果不傳遞此參數,會使用預設值

帶預設值參數必須在不帶預設值參數之後,否則會報錯SyntaxError

def  inc(x=0,y):

return x+y

 File "<ipython-input-19-d6c7b4f89658>", line 1    def inc(x= 0,y):           ^SyntaxError: non-default argument follows default argument
 
 
可變位置參數: 

定義參數時前面加一個*,表示這個參數是可變的,可以接受任意多個參數,這些參數構成一個元組,只能通過位置參數傳遞


 
可變關鍵字參數:
定義參數時,在前面加**,表示這個參數可變,可以接受任意多個參數,這些參數構成一個字典,只能通過關鍵字參數傳遞
 


參數的混合使用:

#位置參數可以和關鍵字參數一起使用
#當位置可變參數和關鍵字可變參數一起使用時候,可變位置參數必須在前

 
def fn(*args,**kwargs):
    print(args)
    print(kwargs)
fn(1,2,3,x=4,y=5)  
(1,2,3)  
(1, 2, 3){'y': 5, 'x': 4}

#普通參數可以和可變參數一起使用,但是傳參的時候必須匹配

 
def fn(x,y,*args,**kwargs):
    print(x)
    print(y)
    print(args)
    print(kwargs)
fn(1,2,3,4,5,a=6,b=7)
1
12(3, 4, 5){'a': 6, 'b': 7}

#關鍵字可變參數不允許在普通參數之前

def  fn(**kwargs,x):

print(x)

#上面的方式定義會出錯


#預設參數可以在可變位置參數之前

def fn(x=5,*args):

print(x)

pprint(args)


#位置可變參數可以在普通參數之前,但是在位置可變參數之後的普通參數變成可keyword-only 參數


keyword-only參數:

Python3特性

#在*號之後的參數只能通過關鍵字參數傳遞的叫keyword-only參數

可變位置參數之後的參數也是keyword-only參數


def  fn(*,x):

print(x)

fn(1,x=3)                   #此時x 只能通過關鍵字參數傳遞,如果安裝普通參數傳遞,會被*和可變位置參數吃掉

fn(x=3)


def fn(*args,x):

print(args)

print(x)

#keyword-only 參數可以有預設值

keyword-only 參數可以和預設參數一起出現,不管它有沒有預設值,不管預設參數是不是keyword-only


參數解構:

可以把一個可迭代對象解構成位置參數

參數解構發生在函數調用用,可變參數發生在函數定義的時候


解構的兩種形式:

一個星號*,解構的對象:可迭代對象,解構後的結果,位置參數

兩個星號**,解構的對象:字典,解構的結果,關鍵字參數

關鍵字參數解構,key必須是str類型

def add(a,b):
    return a+b
data = [4,3]
print(add(*data))            #位置參數解構
data1 = {'a':3,'b':4}
print(add(**data1))          #關鍵字參數解構








相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.