1. 不定长位置参数*args
不定长位置参数指的是函数可以接受任意数量的位置参数,这些参数将被收集到一个元组中,并作为一个参数传递给函数。不定长位置参数用星号 *
来表示。
pythondef func(*args):
# 函数体
pass
在上面的例子中,函数 func()
可以接受任意数量的位置参数,并将它们收集到一个元组 args
中。
例如,下面的函数将所有位置参数相加并返回结果:
pythondef sum(*args):
total = 0
for arg in args:
total += arg
return total
可以通过传递任意数量的位置参数来调用 sum()
函数:
pythonresult1 = sum(1, 2, 3) # result1 = 6
result2 = sum(10, 20, 30, 40, 50) # result2 = 150
2. 不定长关键字参数*kwargs
不定长关键字参数指的是函数可以接受任意数量的关键字参数,这些参数将被收集到一个字典中,并作为一个参数传递给函数。不定长关键字参数用两个星号 **
来表示。
pythondef func(**kwargs):
# 函数体
pass
在上面的例子中,函数 func()
可以接受任意数量的关键字参数,并将它们收集到一个字典 kwargs
中。
例如,下面的函数将所有关键字参数的值相乘并返回结果:
pythondef product(**kwargs):
result = 1
for key in kwargs:
result *= kwargs[key]
return result
可以通过传递任意数量的关键字参数来调用 product()
函数:
pythonresult1 = product(x=1, y=2, z=3) # result1 = 6
result2 = product(a=10, b=20, c=30, d=40, e=50) # result2 = 12000000
3. 同时使用不定长位置参数和不定长关键字参数
需要注意的是,不定长位置参数和不定长关键字参数不能同时出现在同一个函数的参数列表中。如果需要同时使用这两种参数,可以在参数列表中先指定不定长位置参数,再指定不定长关键字参数。
pythondef func(*args, **kwargs):
# 函数体
pass
在上面的例子中,函数 func()
可以接受任意数量的位置参数和关键字参数。需要注意的是,位置参数将被收集到一个元组 args
中,而关键字参数将被收集到一个字典 kwargs
中。