關于【組包與解包】: 組包:python解釋器自動將多個數(shù)據(jù)組裝到一個容器中 解包:將容器中的多個數(shù)據(jù)拆出來 組包: 解釋器把1,2,3自動組包成一個元組,然后賦值給a,a的類型就是元組類型的 a = 1,2,3 # 相當于 a = (1,2,3) print(a) # (1, 2, 3) print(type(a)) # <class 'tuple'> #解包: 解釋器會自動對元組(1,2)進行 解包,然后把1賦值給m,把2賦值給n,把3賦值給3 m,n,k = (1,2,3) # m=1,n=2,k=3 print(m) # 1 print(n) # 2 print(k) # 3 函數(shù)使用參數(shù)可以使函數(shù)變得更加通用,增加擴展性。參數(shù)的順序有講究,定義函數(shù)時,【形參順序】 def func(位置參數(shù),可變位置參數(shù),默認參數(shù),可變關鍵字參數(shù)): pass
解包:func(*args,**kwargs) 與 func(args,kwargs)返回的數(shù)據(jù)不同,* 或者**具有解包的作用,*用來將普通參數(shù)元組解開,**用來將關鍵字參數(shù)字典解開。**kwargs只能在調(diào)用函數(shù)時使用。 下面通過兩個小例子幫助理解 1. def func1(*args ,**kwargs): print(args) # (10, 20) # ( (10, 20) , {'n': 30, 'm': 40}) print(kwargs) # {'n': 30, 'm': 40} def func2(* args ,** kwargs): #print(kwargs) # {'n': 30, 'm': 40} #解包:* args -> *(10,20)->10,20 #解包:** kwargs -> **{'n': 30, 'm': 40}-> n=30,m=40 #func1(args,kwargs) # func1( (10, 20) , {'n': 30, 'm': 40}) 結果為:((10, 20), {'n': 30, 'm': 40}) {} func1(*args,**kwargs) # func1( 10, 20 , n=30,m=40) 結果為:(10, 20) {'n': 30, 'm': 40} func2(10,20,n=30,m=40) # func2((10,20), {'n': 30, 'm': 40})
2. print(*a) # 解包 0 1 2 3 4 5 6 7
|