在Python中,星号(*)在处理函数参数时有两种主要的用途:收集位置参数(也称为非关键字参数)到元组中,以及用于函数的定义中以表示该函数可以接受任意数量的位置参数。
1. 收集位置参数到元组中
当你在调用一个函数时,如果你有一个列表或元组,并且你希望将其内容作为单独的位置参数传递给函数,你可以使用星号(*)来“解包”这个列表或元组。
def my_function(a, b, c):
print(a, b, c)
args = [1, 2, 3]
my_function(*args) # 输出: 1 2 3
在这个例子中,*args
将列表args
解包为三个单独的位置参数,并将它们传递给my_function
。
2. 在函数定义中使用星号表示可变数量的位置参数
在定义函数时,你可以在参数名前面使用星号(*)来表示该函数可以接受任意数量的位置参数。这些参数将被收集到一个元组中。
def my_function(*args):
for arg in args:
print(arg)
my_function(1, 2, 3, 4, 5) # 输出: 1, 2, 3, 4, 5(每行一个)
在这个例子中,my_function
可以接受任意数量的位置参数,并将它们收集到一个名为args
的元组中。然后,该函数遍历这个元组并打印出每个参数。
需要注意的是,星号()只能用于非关键字参数。如果你想要收集关键字参数(即,那些使用参数名=值语法传递的参数),你应该使用两个星号(*)而不是一个。