Python高階 args與 kwargs詳解

2021-08-08 15:43:28 字數 1273 閱讀 1809

關於*args和**kwargs的使用,這常是新手很困惑的問題。

*args表示非鍵值對的不定個數的變數列表,其中args可以換成別的合法變數名,比如*vars。只有那個*是必須的。**kwargs表示帶鍵值對的不定個數的引數列表,同理kwargs可以換成別的。當你不知道函式要傳多少個引數時,這就很有用了。舉個栗子:

def

test

(*args,**kwargs):

for arg in args:

print arg

for key,value in kwargs.items():

print key,value

test('arg1','arg2',name='qiu',age=25)

輸出:

arg1

arg2

name qiu

age 25

當然,還可以這樣使用:

def

test

(*args,**kwargs):

for arg in args:

print arg

for key,value in kwargs.items():

print key,value

args = ['arg1','arg2']

kwargs =

test(*args,**kwargs)

輸出和上面的栗子一樣。

值得一提的是,如果你要在函式中使用標準引數、*args、**kwargs,那它們的順序是這樣的:

func(arg, *args, **kwargs)

什麼時候使用它們?這還真的要看你的需求而定。

最常見的用例是在寫函式裝飾器的時候(會在另一章裡討論)。此外它也可以用來做猴子補丁(monkey patching)。猴子補丁的意思是在程式執行時(runtime)修改某些**。 打個比方,你有乙個類,裡面有個叫get_info的函式會呼叫乙個api並返回相應的資料。如果我們想測試它,可以把api呼叫替換成一些測試資料。例如:

import someclass

defget_info

(self, *args):

return

"test data"

someclass.get_info = get_info

python 中 args和 kw 學習筆記

1.實參 def test 0 x,y 實參x,y print x print y test 0 4,5 452.args 非關鍵字引數,用於元組 def test 1 x,y,args args print x print y print the length of args is s len a...

args與 args的區別

python學習 args 與kwargs的理解 1 args和kwargs 是python中經常使用的函式引數,代表著函式的引數數目是可變的。並且args使用時必須要在kwargs的前面,當和在函式外的時候是解包操作符,當 和在函式定義時出現時組包,和屬於pep448規範,而pep448,在pyt...

python函式中的 args與 kwargs

在函式的引數列表中,接受任何多個無名引數。在函式引數列表中,接受類似於a 1這樣的引數形成字典 args或者 kwargs可以單獨使用 當二者一起使用時,在參數列中要將 args放在 kwargs前面 args,kwargs 在引數列表為 args,kwargs 時,在傳參時注意將arg的引數放在k...