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