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

#形参*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

猜你喜欢

转载自www.cnblogs.com/Zhouzg-2018/p/9692795.html