關於*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...