*args 和 **kwargs 主要用于函数定义。 可以将不定数量的参数传递给一个函数。
*args 是用来发送一个非键值对的可变数量的参数列表给一个函数.
例如: def test_var_args( *args):
for arg in args:
print("another arg through *args:", arg)
print(test_var_args('haha', 'python', 'hello', 'world'))
kwargs 允许你将不定长度的键值对, 作为参数传递给一个函数。 如果你想要在一个函数里处理带名字的参数, 你应该使用kwargs。
def greet(**kwargs):
for key, value in kwargs.items():
print("{0} == {1}".format(key, value))
greet(hehe="hello")
输出如下:
args和*kwargs组合使用
有这样一个输出输入内容的函数
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、标准参数与*args、**kwargs
在使用时的顺序
如果你想在函数里同时使用所有这三种参数, 顺序是这样的:
some_func(fargs, *args, **kwargs)
4、什么时候使用?
比如你有一个类,里面有个叫get_info的函数会调用一个API并返回相应的数据。如果我们想测试它,可以把API调用替换成一些测试数据。例如:
import someclass
def get_info(self, *args):
return "Test data"
someclass.get_info = get_info