教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

Python函數(shù)中*args和**kwargs的作用是什么?

更新時間:2023年02月17日11時23分 來源:傳智教育 瀏覽次數(shù):

好口碑IT培訓(xùn)

  *args和**kwargs都適用于函數(shù)的定義的。在日常工作中,如果我們不確定函數(shù)的參數(shù)時候,就可以使用*args和**kwargs去把不定數(shù)量的參數(shù)傳遞給一個函數(shù)。那么什么叫做不定呢,這里解釋為預(yù)先并不知道函數(shù)的使用者會傳遞多少個參數(shù),故而,我們一般在這樣的場景中使用這兩個關(guān)鍵字。

  *args通常被用作發(fā)送一個非鍵值對的可變數(shù)量的參數(shù)列表給一個函數(shù)。*args可以接收任意多個參數(shù)并把這些參數(shù)作為元組傳遞給函數(shù)。*args以元組的形式傳遞,是沒有key值的。

  **kwargs存儲可變的關(guān)鍵字參數(shù),允許使用沒有事先定義的參數(shù)名,將接收到任意多個關(guān)鍵字參數(shù)作為字典傳遞給函數(shù)。**kwargs是以字典的形式傳遞,有key值。

  這里需要強調(diào)的是,函數(shù)的參數(shù)的順序:*args必須在**kwargs前面,調(diào)用函數(shù)傳遞參數(shù)也必須依照這個順序。

  (1)*args示例

def demo(args_f,*args_v):
    print(args_f)
    for x in args_v:
        print(x,end=")

demo(1,'a','b','c','d')

  運行結(jié)果

   1
  Abcd

  再例如:

def function(x,y,*args):
    print(x,y,args)
function(1,2,3,4,5)

  運行結(jié)果:

12(3,4,5)

  說明傳遞給函數(shù)的是一個元組。

  (2)**kwargs示例

def demo(**args_v):
    for k,in args_v.items():
        print(k,v)

demo(name='1hr')

  運行結(jié)果:

name 1hr

  再例如:

def function(**kwargs):
    print(kwargs,type(kwargs))

function(a=2)

  運行結(jié)果

{'a':2}  <class 'dict'>

  需要注意的是,參數(shù)arg、*args、**kwargs三個參數(shù)的位置是確定的。必須是“(arg,*args,**kwargs)”這個順序,否則程序會報錯。

def function(args,*args,**kwargs):
    print(args,args,kwargs)
function(6,7,8,9,a=1,b=2,c=3)

  運行結(jié)果:

6(7,8,9){'a':1,'b':2,'c':3}

0 分享到:
和我們在線交談!