【自记】 Python 中函数参数前加 *(单星号)的解包可迭代对象写法说明

在 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

这种写法很方便,当我们有一个可迭代对象,且想把它的元素逐个传给函数的多个参数时,就可以用 * 来解包。