📜  python中的args和kwargs是什么(1)

📅  最后修改于: 2023-12-03 15:34:24.845000             🧑  作者: Mango

Python中的args和kwargs是什么

在Python中,argskwargs是两个常用的参数传递方式。它们可以在函数参数列表中用来传递变长参数,使得函数能够处理多种不同形式的输入。

*args

*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

**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

在函数参数列表中,*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可以增强函数的灵活性,避免出现多个函数重复的代码。