在Python中,函数定义时可以使用星号(*)来收集任意数量的位置参数,这些参数会被打包成一个元组(tuple)。如果星号出现在参数列表的最后,它表示收集所有剩余的位置参数。这种语法允许函数接受可变数量的参数。
当你在函数定义中使用星号作为最后一个参数时,例如:
def func(a, b, *args):
pass
这里的*args
会收集所有传递给函数func
的位置参数,除了a
和b
之外的所有参数都会被放入args
这个元组中。
这种参数通常被称为可变位置参数(args),与之对应的是可变关键字参数(*kwargs),后者使用两个星号并在函数内部以字典的形式访问。
def sum_all(*args):
return sum(args)
print(sum_all(1, 2, 3)) # 输出: 6
print(sum_all(1, 2, 3, 4, 5)) # 输出: 15
在这个例子中,sum_all
函数可以接受任意数量的参数,并计算它们的总和。
如果你需要确保函数接收特定数量的参数,可以使用*args
结合类型注解和文档字符串来明确函数的预期用法。
def func(a: int, b: int, *args: int) -> None:
"""
This function expects at least two integers 'a' and 'b',
followed by any number of additional integers.
"""
pass
*args
中的参数?在函数内部,你可以像处理普通元组一样处理*args
。
def print_args(*args):
for arg in args:
print(arg)
print_args('hello', 'world', 123)
使用*args
可以让你的函数更加灵活,能够处理不同数量的参数。在设计API时,这是一个非常有用的特性,但同时也需要注意文档说明和类型检查,以确保函数的正确使用。
领取专属 10元无门槛券
手把手带您无忧上云