程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

【Python】args與kwargs拆包詳解

編輯:Python

args與kwargs拆包詳解

先說一下 * ,或許在剛入門Python時對拆包難以理解
C語言中 * 是對指針的操作,在Python中就一個作用,就是“拆包”

“拆包”顧名思義就是打開包,將包(在此指元組Tuple、字典Dictionary)裡面的數據拆分成一個個單獨的數據。

例如:

numTuple = (1, 2, 3)

拆包後就是:

1 2 3

先看如下代碼:

# Python拆包
def function1(value, *args):
print(value) # 1
print(args) # (1, 2, 3, 4)
print(*args) # 1, 2, 3, 4
# 將args與8args作為實參傳送
function2(args) # ((1, 2, 3, 4),) # (1, 2, 3, 4)
function2(*args) # (1, 2, 3, 4) # 1 2 3 4
def function2(*args):
print(args)
print(*args)
function1(1, 1, 2, 3, 4)

執行如下:

解析:

1. function1(1, 1, 2, 3, 4)時,value接收了1,args接收的(1,2,3,4)
注意,是args接收的,不是*args接收的
2. *就是拆包指令,所以輸出args時是以未拆包,也就是原元組進行print的
3. 在將args作為實參傳輸給function2時,就是將未拆包的元組以一個元素形式傳給了新元組
4. 而將*args作為實參時,是拆包後,也就是1,2,3,4以四個元素傳給了function2

剛開始或許會有點難以理解,多寫幾次就會了。
如果你對上述已經理解了,那麼接下來的**kwargs就一目了然了

def function3(**kwargs):
print(kwargs)
for key in kwargs:
print(key)
print(kwargs[key])


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved