欢迎访问宙启技术站
智能推送

Python函数的可变参数(*args和**kwargs)

发布时间:2023-09-16 01:32:18

Python中的函数可接受可变数量的参数,包括位置参数和关键字参数。而可变参数分为两种形式,一种是使用单个星号(*)作为前缀的可变位置参数(*args),另一种是使用双星号(**)作为前缀的可变关键字参数(**kwargs)。

*args是用来接受任意数量的位置参数的,它将这些参数作为一个元组(tuple)传递给函数。下面是一个例子:

def foo(*args):
    for arg in args:
        print(arg)
        
foo(1, 2, 3, 4)

输出为:

1
2
3
4

**kwargs则是用来接收任意数量的关键字参数的,它将这些参数作为一个字典(dictionary)传递给函数。下面是一个例子:

def bar(**kwargs):
    for key, value in kwargs.items():
        print(key, value)
        
bar(a=1, b=2, c=3)

输出为:

a 1
b 2
c 3

可以使用这两种可变参数的组合来定义一个可以接受任意数量和类型的参数的函数。下面是一个例子:

def baz(*args, **kwargs):
    for arg in args:
        print(arg)
    for key, value in kwargs.items():
        print(key, value)
        
baz(1, 2, a=3, b=4)

输出为:

1
2
a 3
b 4

可变参数的使用使得函数的接口更加灵活,能够处理不同数量和类型的参数。在实际的开发中,可变参数经常被用来构建装饰器、处理未知数量的输入、传递参数到其他函数等等。

需要注意的是,在函数定义时可以按照顺序,先定义位置参数,再使用*args,最后使用**kwargs。在调用函数时,先传递位置参数,再传递关键字参数。另外,*args和**kwargs并不是强制使用的命名,可以使用其他名称,但是通常使用这两个名称是一种约定俗成的做法。