python函數動態參數詳解


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}

 

  

    


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM