如何在Python中使用不定长参数?
发布时间:2023-12-03 15:08:58
在Python中,可以使用不定长参数来接受不确定数量的参数。不定长参数分为两种类型:*args和**kwargs。
*args代表接受任意数量的位置参数。在函数定义时,在参数前加上星号(*),可以将所有传递给函数的位置参数放入一个元组中,函数内部可以通过元组的索引来访问参数的值。
例如,下面的代码定义了一个函数,可以接受任意数量的参数,并输出每个参数的值:
def print_args(*args):
for arg in args:
print(arg)
print_args(1, 2, 3) # 输出 1 2 3
print_args('a', 'b', 'c') # 输出 a b c
**kwargs代表接受任意数量的关键字参数。在函数定义时,在参数前加上双星号(**),可以将所有传递给函数的关键字参数放入一个字典中,函数内部可以通过关键字来访问参数的值。
例如,下面的代码定义了一个函数,可以接受任意数量的关键字参数,并输出每个参数的键值对:
def print_kwargs(**kwargs):
for key, value in kwargs.items():
print(key, value)
print_kwargs(a=1, b=2) # 输出 a 1, b 2
print_kwargs(name='John', age=30) # 输出 name John, age 30
同时使用*args和**kwargs,则*args必须在**kwargs之前。
例如,下面的代码定义了一个函数,可以接受任意数量的位置参数和关键字参数,并输出每个参数的值:
def print_args_kwargs(*args, **kwargs):
for arg in args:
print(arg)
for key, value in kwargs.items():
print(key, value)
print_args_kwargs(1, 2, 3, a=4, b=5) # 输出 1 2 3, a 4, b 5
print_args_kwargs(name='John', age=30, city='New York') # 输出 name John, age 30, city New York
在使用不定长参数时,参数的顺序是按照位置参数和关键字参数的顺序来传递的。
