Python中的*args, **kwargs

在Python中,*args**kwargs 是两种传递变量数量的参数到一个函数的方法。它们分别用于处理位置参数和关键字参数。

  1. *args:

    • *args 允许在函数定义中传入一个非固定数量的位置参数。
    • 这些参数在函数内部作为一个元组 (tuple) 访问。
    • 可以使用任何名称而不仅仅是args,但args是常用的约定。关键是前面的*符号。

    示例:

    def sum_all(*args):
        return sum(args)
    
    print(sum_all(1, 2, 3, 4))  # 输出 10
    

    在这个例子中,可以传递任意数量的位置参数给 sum_all 函数,它们会被收集到一个元组中。

  2. **kwargs:

    • **kwargs 允许你在函数定义中传入一个非固定数量的关键字参数。
    • 这些参数在函数内部作为一个字典 (dict) 访问。
    • 可以使用任何名称而不仅仅是kwargs,但kwargs是常用的约定。关键是前面的**符号。

    示例:

    def print_data(**kwargs):
        for key, value in kwargs.items():
            print(f"{key}: {value}")
    
    print_data(name="John", age=25, country="US")
    

    输出:

    name: John
    age: 25
    country: US
    

    在这个例子中,可以传递任意数量的关键字参数给 print_data 函数,它们会被收集到一个字典中。

结合使用:

可以在同一个函数中结合使用*args**kwargs,但要确保*args出现在**kwargs之前:

def combined_example(x, y, *args, **kwargs):
    print(x, y)
    print(args)
    print(kwargs)

combined_example(1, 2, 3, 4, 5, name="John", age=25)

输出:

1 2
(3, 4, 5)
{'name': 'John', 'age': 25}

这里,12是普通的位置参数,(3, 4, 5)是通过*args收集的位置参数,而nameage是通过**kwargs收集的关键字参数。

你可能感兴趣的:(Python,python)