在 Python 中,函数参数前加 *
(单星号)是一种解包可迭代对象的写法,用于将可迭代对象(如元组、列表等)中的元素逐个传递给函数的参数。
具体说明
- 当有一个可迭代对象(比如元组
temp = (1, 2, 3)
),如果直接把这个可迭代对象传给函数(如hello(temp)
),函数会把整个可迭代对象当作一个参数接收,而不是拆分成多个元素分别对应函数的多个参数。 - 但如果在可迭代对象前加上
*
(即hello(*temp)
),Python 就会把可迭代对象解包,将其中的每个元素依次传递给函数的参数,效果等价于直接把元素逐个写出来传给函数(即hello(1, 2, 3)
)。
再举个例子
假设有列表 nums = [10, 20, 30]
,函数 def func(a, b, c): print(a, b, c)
。
- 若执行
func(nums)
,会报错,因为func
期望接收 3 个参数,却只收到 1 个列表参数。 - 若执行
func(*nums)
,就会把列表解包,等价于func(10, 20, 30)
,能正常打印出10 20 30
。
这种写法很方便,当我们有一个可迭代对象,且想把它的元素逐个传给函数的多个参数时,就可以用 *
来解包。