*args 和 **kwargs 主要用于函數(shù)定義购披。 可以將不定數(shù)量的參數(shù)傳遞給一個函數(shù)哮伟。
*args 是用來發(fā)送一個非鍵值對的可變數(shù)量的參數(shù)列表給一個函數(shù).
例如: def test_var_args( *args):
for arg in args:
print("another arg through *args:", arg)
print(test_var_args('haha', 'python', 'hello', 'world'))
kwargs 允許你將不定長度的鍵值對, 作為參數(shù)傳遞給一個函數(shù)副编。 如果你想要在一個函數(shù)里處理帶名字的參數(shù), 你應該使用kwargs煮寡。
def greet(**kwargs):
for key, value in kwargs.items():
print("{0} == {1}".format(key, value))
greet(hehe="hello")
輸出如下:
args和*kwargs組合使用
有這樣一個輸出輸入內(nèi)容的函數(shù)
def test1(arg1,arg2,arg3):
print("arg1:",arg1)
print("arg2:",arg2)
print("arg3:",arg3)
1、使用*args
args=("two",5,6)
test1(*args)
輸出如下:
2趾诗、使用**args
kwargs = {"arg3": 3, "arg2": "two", "arg1": 5}
test1(**kwargs)
輸出如下:
3蜡感、標準參數(shù)與*args、**kwargs
在使用時的順序
如果你想在函數(shù)里同時使用所有這三種參數(shù)恃泪, 順序是這樣的:
some_func(fargs, *args, **kwargs)
4郑兴、什么時候使用?
比如你有一個類贝乎,里面有個叫get_info的函數(shù)會調(diào)用一個API并返回相應的數(shù)據(jù)情连。如果我們想測試它,可以把API調(diào)用替換成一些測試數(shù)據(jù)览效。例如:
import someclass
def get_info(self, *args):
return "Test data"
someclass.get_info = get_info