【Python】*args和**kwargs

使用*args和kwargs可以非常方便的定義函數,同時增強代碼的可擴展性,方便代碼維護。**

#1.*args
***args 用在不確定傳入參數個數的情況下。且以元組方式呈現。**比如下面的例子:

def myfunction(*args):
    print(*args[0])
    print(*args[1])
    print(*args[2])

if __name__ == '__main__':
    myfunction([1,2,3],(True,False),'hello')

輸出:
1 2 3 True False h e l l o

當同時有位置參數和*args行參時,用法如下:

def myfunction(x,*args):
    print('x:',x)
    print('*args[0]:',*args[0])
    print('*args[1]:',*args[1])
    #print(*args[2])

if __name__ == '__main__':
    myfunction([1,2,3],(True,False),'hello')

輸出:
x: [1, 2, 3] *args[0]: True False *args[1]: h e l l o

#2.**kwargs
形參中按照關鍵字傳值,把多餘的傳值以字典的方式呈現

def myfunction(x,**kwargs):
    print(kwargs)

if __name__ == '__main__':
    myfunction(1,a=1,b=2,c=3)

輸出一個字典:
{'a': 1, 'b': 2, 'c': 3}

也可以分開輸出和調用:

def myfunction(**kwargs):
    for k,v in kwargs.items():
        print(k,v)

if __name__ == '__main__':
    myfunction(a=1,b=2,c=3)

#3.同時使用位置參數 ,*args和**kwargs
同時使用三者時,順序必須是位置參數,*args,**kwargs,否則會報錯。

如下面的例子所示:

def myfunction(param,*args,**kwargs):
    print('param:',param)
    print('*args:',*args)
    print('**kwargs:',kwargs)

if __name__ == '__main__':
    myfunction('hello',['x','y','z'],(20,30),a=1,b=2,c=3)

輸出:
param: hello *args: ['x', 'y', 'z'] (20, 30) **kwargs: {'a': 1, 'b': 2, 'c': 3}


本文是在閱讀別人材料的基礎上做了一個自己的小結,下面是兩篇很好的參考鏈接:
python函數——形參中的:*args和**kwargs
理解 Python 中的 *args 和 **kwargs

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章