📅  最后修改于: 2023-12-03 15:34:24.845000             🧑  作者: Mango
在Python中,args
和kwargs
是两个常用的参数传递方式。它们可以在函数参数列表中用来传递变长参数,使得函数能够处理多种不同形式的输入。
*args
用于传递一个不定长度的参数列表,表示其他没有显式列出的位置参数。
例如,以下函数可以接收任意数量的参数,并将它们相加:
def add(*args):
total = 0
for arg in args:
total += arg
return total
在调用此函数时,可以传入任意数量的参数:
>>> add(1, 2, 3)
6
>>> add(1, 2, 3, 4, 5)
15
在函数内部,args
是一个元组(tuple),里面包含所有传入的位置参数。
**kwargs
用于传递一个不定长度的关键字参数列表,表示其他没有显式列出的关键字参数。
例如,以下函数可以接收任意数量的关键字参数,并将它们按照键排序:
def sort_kwargs(**kwargs):
keys = sorted(kwargs.keys())
for key in keys:
print(key, ':', kwargs[key])
在调用此函数时,可以传入任意数量的关键字参数:
>>> sort_kwargs(a=1, c=3, b=2)
a : 1
b : 2
c : 3
在函数内部,kwargs
是一个字典(dict),里面包含所有传入的关键字参数和对应的值。
在函数参数列表中,*args
和**kwargs
可以同时出现,表示函数接受任意数量的位置参数和关键字参数。在调用函数时,位置参数必须在关键字参数之前。
例如,以下函数可以接收任意数量的位置参数和关键字参数,并将它们打印出来:
def print_args(*args, **kwargs):
print('Positional arguments:')
for arg in args:
print(arg)
print('Keyword arguments:')
for key in kwargs:
print(key, ':', kwargs[key])
在调用此函数时,可以混合传入位置参数和关键字参数:
>>> print_args(1, 2, a=3, b=4)
Positional arguments:
1
2
Keyword arguments:
a : 3
b : 4
在函数内部,args
是一个元组(tuple),里面包含所有传入的位置参数。kwargs
是一个字典(dict),里面包含所有传入的关键字参数和对应的值。
*args
和**kwargs
是Python中非常有用的参数传递方式,可以用于处理不定长度的位置参数和关键字参数。在编写函数时,适时地使用*args
和**kwargs
可以增强函数的灵活性,避免出现多个函数重复的代码。