可变参数
*args
和 **kwargs
是用于在 Python 函数或方法中处理可变数量的参数的特殊语法。
-
*args
是用于传递不定数量的位置参数(Positional Arguments)。在函数定义中,*args
表示可以接受任意数量的位置参数,并将它们作为一个元组(tuple)传递给函数。调用函数时,可以传递任意数量的位置参数,它们将被打包成一个元组传递给*args
。
例如,以下函数接受任意数量的位置参数并将它们相加:
def add_numbers(*args):
total = 0
for num in args:
total += num
return total
调用方式示例:
result = add_numbers(1, 2, 3, 4) # result = 10
result = add_numbers(10, 20, 30, 40, 50) # result = 150
-
**kwargs
是用于传递不定数量的关键字参数(Keyword Arguments)。在函数定义中,**kwargs
表示可以接受任意数量的关键字参数,并将它们作为一个字典(dictionary)传递给函数。调用函数时,可以传递任意数量的关键字参数,它们将被打包成一个字典传递给**kwargs
。
例如,以下函数接受任意数量的关键字参数并打印它们的键值对:
def print_kwargs(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
调用方式示例:
print_kwargs(name="John", age=30, city="New York")
# 输出:
# name: John
# age: 30
# city: New York
需要注意的是,*args
和 **kwargs
可以与其他参数一起使用,但通常放在参数列表的最后。例如:
def example_func(arg1, arg2, *args, **kwargs):
# 函数体
在函数定义中,参数的顺序应为:必需参数,*args
,关键字参数,**kwargs
。这样,函数可以接受位置参数、不定数量的位置参数、关键字参数以及不定数量的关键字参数。