详解Python 函数参数*args和**kwargs

  • Post category:Python

当定义函数时,无法预测用户希望传递给函数的参数个数。Python提供了两个特殊格式的参数名称——*args**kwargs——用于告知函数,它应该能够接受任意数目的参数。本次攻略将重点介绍这两个参数的使用方法。

*args参数

*args是一个用于传递一个以星号(*)开头的参数,它告诉Python将多个参数传递给函数。下面是*args参数的使用方法:

def my_function(*args):
    for arg in args:
        print(arg)

my_function('Hello', 'World', 'Python')

输出:

Hello 
World 
Python

在这个例子中,可以传递多个参数并使用循环打印它们的值。这个参数可以传递任意数量的参数,包括零个。

**kwargs参数

**kwargs是一个类似于*args的参数,但它允许使用关键字参数。下面是**kwargs参数的使用方法:

def my_function(**kwargs):
    for key, value in kwargs.items():
        print("{0} = {1}".format(key, value))

my_function(name='John', age=30, city='New York')

输出:

name = John
age = 30
city = New York

在这个例子中,**kwargs允许传递任意数量的关键字参数。本例中,nameagecity是函数调用中传递的关键字参数。在函数中,使用for循环遍历参数字典,以便输出键和值。

*args**kwargs参数同时使用

有时候,需要在一个函数内同时使用这两个参数类型。下面是一个示例,展示了如何在函数中同时使用两个参数:

def my_function(*args, **kwargs):
    print("Args:")
    for arg in args:
        print(arg)
    print("Kwargs:")
    for key, value in kwargs.items():
        print("{0} = {1}".format(key, value))

my_function('Hello', 'World', name='John', age=30, city='New York')

输出:

Args:
Hello
World
Kwargs:
name = John
age = 30
city = New York

注意在这个示例中,*args**kwargs同时被使用,这允许我们接受不特定数目的参数和任意数量的关键字参数。在函数中,我们使用循环遍历这两个参数列表,并输出它们的值。