1. 程式人生 > >python-8:函數之二 *args, **kwargs

python-8:函數之二 *args, **kwargs

返回 得到 元組 函數 實參 收集 abcd 字典 位置

#形參*args:收集參數
# 功能1:收集除位置參數外的所有參數,以元組形式返回;
# 功能2:實參以‘*‘和‘可叠代類型‘一起的形式,如*[],*(),*{},*"...",傳入時,
# *args,星號‘*‘的作用,用來解析‘可叠代類型‘中元素,放入元組,實質是循環取得‘可叠代類型‘中每個元素,存入元組
#註意,*{},為字典時,得到的是key值
def test1(x,y,*args,**kwargs):# x,y,位置參數,*args,收集參數,收集除位置參數外的所有參數,以元組形式返回
print(‘x=‘,x)
print(‘args=‘,args)
print(‘len=‘,len(args))

print(‘kwargs=‘,kwargs)
print(‘kw_len=‘,len(kwargs))
test1(2,1,[3,4,5],(7,8),9,10,*‘abcd‘,*[‘ag‘,123,‘b‘],*(‘c‘,‘d‘),*{11,22,33},*{‘key1‘:‘v1‘},m=12,**{‘k‘:‘v‘,‘k1‘:‘v1‘})
#運行結果:
# x= 2
# args= ([3, 4, 5], (7, 8), 9, 10, ‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘ag‘, 123, ‘b‘, ‘c‘, ‘d‘, 33, 11, 22, ‘key1‘)
# len= 17
# kwargs= {‘m‘: 12, ‘k‘: ‘v‘, ‘k1‘: ‘v1‘}

# kw_len= 3

***********************************************************************************************************************
#形參**kwargs:僅收集映射,如:關鍵字參數(x=3,y=5),實質也是鍵值對形式;**字典參數(**{})
#以字典形式返回
def test2(m,n,**kwargs):
print(‘m=‘,m)
print(‘kwargs=‘,kwargs)
print(‘len=‘,len(kwargs))
test2(1,2,x=3,y=5,**{‘k‘:‘v‘,‘k2‘:5})

# 運行結果:
# m= 1
# kwargs= {‘x‘: 3, ‘y‘: 5, ‘k‘: ‘v‘, ‘k2‘: 5}
# len= 4

python-8:函數之二 *args, **kwargs