python中 args和 kwargs的區別

2021-09-18 01:27:40 字數 1979 閱讀 6065

*args --表示所有引數的元組(tuple)

如:(1, 2, 3, 4)

**kwargs --表示傳入的鍵值對(key = value),返回資料結果為字典(dict)

如;例一:

def func(test, *args, **kwargs):

print("test = ", test)

print("args = ", args)

print("kwargs = ", kwargs)

func("testdata")

print('-----------------------------------')

func( 1, 2, '3')

print('------------------------------------')

func("testdata", 1, 2, '3', a=4, b="foo")

執行結果:

test =  testdata

args = ()

kwargs = {}

-----------------------------------

test = 1

args = (2, '3')

kwargs = {}

------------------------------------

test = testdata

args = (1, 2, '3')

kwargs =

例二:

def func(*args):

print(args)

func()

func(12,'a','c',3)

func(12,'a','c',3,a=2,c=5,d='f') #這種情況會報錯,沒有定義關鍵字引數**kwargs,報錯資訊見執行結果

執行結果:

()

(12, 'a', 'c', 3)

traceback (most recent call last):

file "e:/test/pylearning/argkwarg.py", line 34, in func(12,'a','c',3,a=2,c=5,d='f')

typeerror: func() got an unexpected keyword argument 'a'

例三:

def func(**kwargs):

print(kwargs)

func()

func(a=2,c=5,d='f')

func(12,'a','c',3,a=2,c=5,d='f') #這種情況會報錯,沒有定義無名引數*args,報錯資訊見執行結果

執行結果:

{}

traceback (most recent call last):

file "e:/test/pylearning/argkwarg.py", line 33, in func(12,'a','c',3,a=2,c=5,d='f')

typeerror: func() takes 0 positional arguments but 4 were given

說明:

*args和**kwargs是python中的可變引數;

*args表示的是無名引數,可任意數量,其結果組成是乙個元組;

**kwargs表示的是關鍵字引數,即每乙個引數都是以鍵值對(key = value)的形式出現的,其結果組成是乙個字典;

在定義引數時,*args和**kwargs可以不傳參;

args和**kwargs可以單獨出現也可以一起出現,但一起出現的時候必須args在**kwargs之前。

python中args和kwargs引數的使用

在python中,規定了函式中的形參前帶 的,稱為可變位置引數,通常用 args表示。args表示乙個元組,傳入的引數值會被放到這個元組裡面,型別可以是任意的。同理,函式中形參前帶 的,成為可變關鍵字引數,通常用 kwargs表示。表示乙個字典,傳入的引數以鍵值對的形式存放在了字典裡面。下面我們來看...

Python中 args 和 kwargs的用法

好久沒有學習python了,應為工作的需要,再次拾起python,喚起記憶。當函式的引數不確定時,可以使用 args 和 kwargs,args 沒有key值,kwargs有key值。還是直接來 吧,廢話少說 python def fun var args farg,args print arg f...

Python中 args 和 kwargs的用法

當函式的引數不確定時,可以使用 args 和 kwargs,args 沒有key值,kwargs有key值。還是直接來 吧,廢話少說 python view plaincopyprint?def fun var args farg,args print arg farg for value in a...