python args和 kwargs魔法變數

2021-10-03 20:10:39 字數 2429 閱讀 3801

1、 函式的三種主要引數型別:

標準引數、*args、**kwargs

2、 定義:

*args、**kwargs,也叫魔法引數。它們發揮作用的重點是前面的星號,這兩個可以打包或者解包相應的引數,至於,args、kwargs是代指,也可以是任何其他字元,例如*x,**xx。

3、使用舉例

魔法引數使用主要是兩方面,一是定義函式時不確定函式引數的數量。二是呼叫函式時,為了將引數一次性傳入。

1、定義函式

下面舉例了,**是如何將傳入的字典引數解包,以及如何將傳入的關鍵字引數打包成乙個字典型別

def

get(url,

**kwargs)

: kwargs.setdefault(

'allow'

,true

)# 設定kwargs的預設鍵值

# 此時kwargs是乙個字典,任何字典操作都以應用

for i in kwargs:

print

(i,kwargs[i]

)get(

'url'

,data=

3, headers=4)

----

----

----輸出---

----

----

--data 3

headers 4

allow true--

----

----

----

----

----

----

--arg =

get(

'url'

,**arg)

data 3

headers 4

allow true

* 使用如下,同樣道理,打包與解包。打包後,args是乙個tuple型別

def

send

(x,*args)

:#args是乙個列表

for i in args:

print

(i)send(

'x',3,

4,5,

6)--

----

----輸出---

----

--34

56--

----

----

----

----

----

s ='abcde'

# 這裡舉例乙個str,str也會是乙個集合,也可以試試列表、tuple等

send(

'x',

*s)bcd

e

2、呼叫函式

呼叫函式時使用魔法變數主要作用是解壓unpack引數集合。

**使用舉例

def

send

(url,data,header=

none):

print

('url:'

,url)

print

('data:'

,data)

print

('headers:'

,header)

kwarg =

```send(

**kwarg)--

----

----

----

----輸出---

headers: chrome

注意:當使用**解析字典型引數時,傳入函式的是類似key=value的形式,所有字典的鍵值必須存在於函式定義時引數名字中,否則會報錯。typeerror: send() got an unexpected keyword argument 『p』。

*使用舉例,按位置分配引數值。此時,傳入的資料型別可以是列表、tuple、str等,然後,*可以將其解包。

def

get(x,y,z)

:print

('x:'

,x)print

('y:'

,y)print

('z:'

,z)arg =[1

,2,3

]get(

*arg)--

----

----

----

-輸出---

----

----

----

----

----

----

----

----

--x:1

y:2z:3

Python args和 kwargs 的區別

args就是所有引數的陣列,kwargs就是當你傳入key value是儲存的字典。補充一下 kwargs不影響引數位置 例子 def test a,args,kwargs print a print b print c print args print kwargs test 1,2,3,d 4 ...

python args 和 kwargs的用法

當函式的引數不確定時,可以使用 args 和 kwargs,args 沒有key值,kwargs有key值。關於args coding utf 8 author ecaoyng def func args farg,args print the first arg is s farg print t...

python args和 kwargs的用法

1 args用來將引數打包成tuple給函式體呼叫 args用來將引數打包成tuple給函式體呼叫 def func args print args,type args func args用來將引數打包成tuple給函式體呼叫 def func02 x,y,args print x,y,args,t...