在定義函數時如果參數個數不固定的時候,我們希望能夠使用一個特殊的字符串表示可變長度的參數。那麼你或許會碰到兩種可變長度的參數,即*args和**kwargs。
*args和**kwargs都是不定長參數收集機制,這裡我們總結一下*args和**kwargs調用的區別和注意事項。
區別1:
*args 將傳入函數的參數打包成元組(tuple)給函數體調用
**kwargs 將傳入函數的參數打包成字典(dict)給函數體調用
注意1:
如果函數形參qi沒有加前面的*
,那就是一個對象,如果加了*args
,表示可以傳入多個實參進去,傳入的參數被收集到一個元組args
這個對象中,如果對這個元組對像使用*
操作,表示解開,返回的是元組中的多個對象!!
注意2:
如果同時使用args,*args和**kwargs,必須是args,*args,**kwargs順序