小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

python中的裝包與拆包

 xiaoyimin 2019-12-11

*args和 **kwargs是在python的代碼中經(jīng)常用到的兩個參數(shù),初學者對這兩個參數(shù)的理解可能僅僅限于*args是用于接收多余的未命名參數(shù),**kwargs用于接收形參中的命名參數(shù),其中args是一個元組類型,而kwargs是一個字典類型的數(shù)據(jù)。 

其實這兩個參數(shù)還涉及到了python中的一個重要的知識點,拆包與解包。這篇文章將會通過對這兩個參數(shù)的拆開揉碎講解,讓小伙伴能對拆包解包有一些更深刻的認識。(我一直認為這個世界上只存在懂與不懂兩種狀態(tài),從來沒有什么似懂非懂)。

1.*args
先看下面這段代碼,挺住別暈,哈哈。
  1. def run(a,*args):
  2. #第一個參數(shù)傳給了a
  3. print(a)
  4. # args是一個元組,里面是2和3兩個參數(shù)
  5. print(args)
  6. # *args是將這個元組中的元素依次取出來
  7. print('對args拆包')
  8. print(*args) # *args 相當于 a,b = args
  9. print('將未拆包的數(shù)據(jù)傳給run1')
  10. run1(args)
  11. print('將拆包后的數(shù)據(jù)傳給run1')
  12. run1(*args)
  13. def run1(*args):
  14. print('輸出元組')
  15. print(args)
  16. print('對元組進行拆包')
  17. print(*args)
  18. run(1,2,3) #后面的2和3
下面是上面程序的輸出結(jié)果:

理解這段代碼需要把握住下面幾點:
1.形參中的*args其實真正接收數(shù)據(jù)的args,它是一個元組,把傳進來的數(shù)據(jù)放在了args這個元組中。
2. 函數(shù)體里的args依然是那個元組,但是*args的含義就是把元組中的數(shù)據(jù)進行拆包,也就是把元組中的數(shù)據(jù)拆成單個數(shù)據(jù)。
3. 對于args這個元組,如果不對其進行解包,就將其作為實參傳給其它以*args作為形參的函數(shù)時,args這個元組會看看作一個整體,作為一個類型為元組的數(shù)據(jù)傳入。
把握上面的這三點,就不會被剛才的程序繞暈了。
2. **kwargs
如果對上面的*args理解了,那么這個**kwargs也就不難理解了,把這兩個**類比成之前的一個*,接下來程序的所有執(zhí)行結(jié)果都可以得到合理的解釋。
  1. def run(**kwargs):#傳來的 key = value 類型的實參會映射成kwargs里面的鍵和值
  2. # kwargs是一個字典,將未命名參數(shù)以鍵值對的形式
  3. print(kwargs)
  4. print('對kwargs拆包')
  5. # 此處可以把**kwargs理解成對字典進行了拆包,{'a':1,'b':2}的kwargs字典又
  6. # 被拆成了a=1,b=2傳遞給run1,但是**kwargs是不能像之前*args那樣被打印出來看的
  7. run1(**kwargs)
  8. #print(**kwargs)
  9. def run1(a,b): #此處的參數(shù)名一定要和字典的鍵的名稱一致
  10. print(a,b)
  11. run(a=1,b=2)
執(zhí)行結(jié)果如下圖:

總結(jié):
1. *args作為形參時是用來接收多余的未命名參數(shù),而**kwargs是用來接收key=value這種類型的命名參數(shù),args是元組,kwargs是字典。
2. *和**在函數(shù)體中除了拆包之外,并沒有什么卵用。

3. 裝包的含義就是把未命名參數(shù)和命名參數(shù)分別放在元組或者字典中。

(掃描下圖二維碼,那些百度云失效的編程資源這里都有,蟹蟹關注)

   

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多