Python中 args 和 kwargs的用法

2021-09-29 15:26:35 字數 2457 閱讀 4285

形參中使用***的原理可以參考《 * 與 ** 引數問題》這篇文章,講解非常詳細,本文只作乙個學習總結。

*args是可變引數,args接收的是乙個元組。比如可以向乙個函式傳入乙個列表(或迭代器),在形參中是使用*就可以在函式中依次接收這個列表的每乙個元素;

**kw是關鍵字引數,kw接收的是乙個字典。比如在收集使用者資訊的時候,除了必填項之外,我們可以用**來方便地接收那些未知個數的可選項。

在 lambda 表示式中使用***

lambda 表示式可以當做乙個匿名函式,是函式都可以傳參,匿名函式的形參中也帶有使用***

a = lambda *s: s + (2, 'g')

print(a('dd', 'de'))

# 列印出來的結果:('dd', 'de', 2, 'g')

lambda_test = lambda **args: args

print(lambda_test(usr='obama', age=18))

# 列印出來的結果:

眾所周知,python 中的可迭代物件分為集合資料型別(list、tuple、dict、set、str)和 generator 兩種。

而我們常見的可迭代對映就是 dict 啦。

實參中的*會獲取可迭代物件的 key(索引/鍵值)

由於獲取的是可迭代物件的 key,所以函式的形參可以為位置引數或可變引數。

def foo(n1, n2, n3, n4, n5):

return n1, n2, n3, n4, n5

d =

print(foo(*d))

# 列印得到的結果為 ('n1', 'n2', 'n3', 'n4', 'n5')

def fu(*n):

print(n)

d =

print(fu(*d))

# 列印得到的結果為 ('n1', 'n2', 'n3', 'n4', 'n5')

以上兩個例子中,將實參中的字典物件換成列表、元組或者字串物件,都是可以的,朋友們可以自己動手嘗試一下。

實參中的**會獲取可迭代對映的 value

由於獲取的是可迭代物件的 value,所以函式的形參只能為關鍵字引數,即引數的個數和名稱都是固定的。

def foo(n1, n2, n3, n4, n5):

return n1, n2, n3, n4, n5

d =

print(foo(**d))

# 列印得到的結果為(5, 6, 7, 9, 8)

如果我們要呼叫的函式不是關鍵字形參:

def fu(*n):

print(n)

iterator = 'unique'

print(fu(**iterator))

如果呼叫函式中的關鍵字形參名稱與傳入的實參無法一一對應:

def foo(n1, n2, n3, n4, n5):

return n1, n2, n3, n4, n5

d =

print(foo(**d))

# 會報錯為:typeerror: foo() got an unexpected keyword argument 'n6'

參考:

多個實參,放到乙個元組裡面,以*開頭,可以傳多個引數;**是形參中按照關鍵字傳值把多餘的傳值以字典的方式呈現

*args:(表示的就是將實參中按照位置傳值,多出來的值都給args,且以元祖的方式呈現)

示例def foo(x,*args):

print(x)

print(args)

foo(1,2,3,4,5)#其中的2,3,4,5都給了args結果1

(2, 3, 4, 5)12

**kwargs:(表示的就是形參中按照關鍵字傳值把多餘的傳值以字典的方式呈現)示例

def foo(x,**kwargs):

print(x)

print(kwargs)

foo(1,y=1,a=2,b=3,c=4)  #將y=1,a=2,b=3,c=4以字典的方式給了kwargs

結果:112

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...