????????在 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
。
????????這種寫法很方便,當我們有一個可迭代對象,且想把它的元素逐個傳給函數的多個參數時,就可以用?*
?來解包。