python的*args 和 **kwargs

*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")
输出如下:


image.png

args和*kwargs组合使用

有这样一个输出输入内容的函数

def test1(arg1,arg2,arg3):
print("arg1:",arg1)
print("arg2:",arg2)
print("arg3:",arg3)

1、使用*args

args=("two",5,6)
test1(*args)
输出如下:


image.png

2、使用**args

kwargs = {"arg3": 3, "arg2": "two", "arg1": 5}
test1(**kwargs)
输出如下:


image.png

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

你可能感兴趣的:(python的*args 和 **kwargs)