Python 函数参数 args 和 *kwargs 的使用方法
在 Python 中,*args
和 **kwargs
分别用于处理不定数量的位置参数和关键字参数,方便编程者编写更为灵活的代码。
*args
*args
,用来发送一个非键值对的可变数量的参数列表给一个函数。通常,我们将它作为函数定义中的最后一个形参。你可以向这个函数传递任意数量的非键值对的参数。
def foo(*args):
for arg in args:
print(arg)
foo(1, 2, 3, 4, 5)
上述示例中,foo
函数接受了一个特殊的参数 *args
,用来传递不确定个数的参数,这里我们传递了 5 个数值参数,依次输出了 1, 2, 3, 4, 5。
**kwargs
**kwargs
允许你将不定长度的键值对,作为参数传递给一个函数。和 *args
类似, **kwargs
需要放置于函数定义中最后一个形参位置。
def bar(**kwargs):
for key, value in kwargs.items():
print(f'{key}={value}')
bar(name='Jack', age=20, gender='Male')
上述示例中,bar
函数接受了一个特殊的参数 **kwargs
,用来传递不确定个数的键值对参数,这里我们传递了 3 个键值对参数,依次输出了 ‘name=Jack’, ‘age=20’, 和 ‘gender=Male’。
args 与 *kwargs 的组合使用
如果我们想要在一个函数中同时使用 *args
与 **kwargs
,则应该将 *args
放在 **kwargs
之前。
def zoo(a, b, *args, **kwargs):
print(f'a: {a}')
print(f'b: {b}')
print(f'args: {args}')
print(f'kwargs: {kwargs}')
zoo(1, 2, 3, 4, name='Tom', age=21, gender='Female')
上述示例中,zoo
函数接受了一个非键值对参数 a
,一个非键值对参数 b
,一个任意数量的位置参数 *args
,以及一个任意数量的键值对**kwargs
。在调用时,我们传递了 2 个非键值对参数以及 3 个位置参数和 3 个键值对参数。依次输出了 a: 1, b: 2, args: (3, 4), kwargs: {‘name’: ‘Tom’, ‘age’: 21, ‘gender’: ‘Female’}。
总结
以上,我们完成了 Python 函数参数 *args
和 **kwargs
的使用方法介绍, *args
和 **kwargs
一起使用可以满足其它代码无法满足的需求。理解了这两个参数的作用和基本用法,我们可以编写更加高效和灵活的代码。