python中得裝包與拆包

在這裏插入圖片描述

def run(a,*args):
	#第一個參數傳給了a
	print(1,a)
	# args是一個元組,裏面是2和3兩個參數
	print(2,args)
    # *args是將這個元組中的元素依次取出來
	print(3,"對args拆包")
	print(4,*args) # *args 相當於 a,b = args
	print(5,"將未拆包的數據傳給run1")
	run1(args)
	print(6,"將拆包後的數據傳給run1")
	run1(*args)

def run1(*args):
	print(7,"輸出元組")
	print(8,args)
	print(9,"對元組進行拆包")
	print(10,*args)

run(1,2,3) #後面的2和3

  • 下面是上面程序的輸出結果:
1 1
2 (2, 3)
3 對args拆包
4 2 3
5 將未拆包的數據傳給run1
7 輸出元組
8 ((2, 3),)
9 對元組進行拆包
10 (2, 3)
6 將拆包後的數據傳給run1
7 輸出元組
8 (2, 3)
9 對元組進行拆包
10 2 3

在這裏插入圖片描述

def run(**kwargs):#傳來的 key = value 類型的實參會映射成kwargs裏面的鍵和值
   	# kwargs是一個字典,將未命名參數以鍵值對的形式
   	print(kwargs)
    print("對kwargs拆包")
   	#  此處可以把**kwargs理解成對字典進行了拆包,{"a":1,"b":2}的kwargs字典又
   	# 被拆成了a=1,b=2傳遞給run1,但是**kwargs是不能像之前*args那樣被打印出來看的
   	run1(**kwargs)
  	#print(**kwargs)

def run1(a,b): #此處的參數名一定要和字典的鍵的名稱一致
  	print(a,b)

run(a=1,b=2)

  • 執行結果如下:
{'a': 1, 'b': 2}
對kwargs拆包
1 2

總結

  • *args作爲形參時是用來接收多餘的未命名參數,而**kwargs是用來接收key=value這種類型的命名參數,args是元組,kwargs是字典。

  • *和**在函數體中除了拆包之外,並沒有什麼卵用。

  • 裝包的含義就是把未命名參數和命名參數分別放在元組或者字典中。上述代碼run(1,2,3)就是一個裝包得過程

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章