Python的動態參數:
1,參數前一個“*”:在函數中會把傳的參數轉成一個元組。
1 def func (*args): 2 print(args) 3 4 func(123,1,2,'a')
result:(123, 1, 2, 'a')
2,“**args”的參數:函數中被轉成一個字典。
如果這樣傳參的話會報錯,因為沒有指定key或value: def func (**args): print(args) func(123,1,2,'a') result:TypeError: func() takes 0 positional arguments but 4 were given def func (**args): print(args) func (a=1,b=2) result:{'a': 1, 'b': 2}
3,混合動態參數的情況:
def func (*args,**kwargs): print("%s----%s" %(args,kwargs)) func (1,2,a=1,b=2) Result:(1, 2)----{'b': 2, 'a': 1} 也是沒問題的,需要注意的是必須*args在前**kwargs在后,參數也是一樣。
4,變量當動態參數的情況:
這種情況如果我們直接把一個list傳到前面,一個dict傳到后面: def func (*args,**kwargs): print("%s----%s" %(args,kwargs)) list=[1,2] dic={'a':1,'b':2} func (list,dic) Result:([1, 2], {'b': 2, 'a': 1})----{} 后面的字典竟然是空的- -! So,我們需要叫函數知道那個變量是*args的參數,哪個是**args的參數,正確傳參寫法: func(*list,**dic Result:(1, 2)----{'a': 1, 'b': 2}
