day04 python *args和**kwargs

# arg1+*args  函数调用的时候,会把第一个参数给arg1,其余的参数以元组(tuple)都给args
def function1(arg1,*args):
    print('arg1=', arg1)
    print('args=',args)
function1(1,2,3)

'''
上述调用结果是:
arg1= 1
args= (2, 3)
'''

# arg1+**kaargs 函数调用的时候,参数必须使用 “arg1="shabi1",arg2="shabi2",arg3='shabi3'”形式给出
#且第一个实参 必须是arg1=xxx  ,函数会把第一个参数赋值给arg1,其余的参数放在一个字典的形式给kwargs
def function2(arg1,**kwargs):
    print('arg1=',arg1)
    print('kwargs=',kwargs)
function2(arg1="shabi1",arg2="shabi2",arg3='shabi3')    #
'''
上述调用结果是:
arg1= shabi1
kwargs= {'arg2': 'shabi2', 'arg3': 'shabi3'}
'''

#*args,**kwargs,函数调用的时候,参数可以是任意数字,字符串,列表,字典,元组的组成,key=value的实参必须放在最后面
#函数会把所有的非 key=value的放在一个元组里面传给args,而把所有的key=value参数放在一个字典里面传给kwargs
def function3(*args,**kwargs):
    print('args=',args)
    print('kwargs=',kwargs)
function3(1,2,[3,4],args="1",arg2="shabi2",arg3="shabi3")
'''
上述调用结果是:
args= (1, 2, [3, 4])
kwargs= {'args': '1', 'arg2': 'shabi2', 'arg3': 'shabi3'}
'''


'''
总结:当你不确定你会传什么参数的时候,第三种是最常用的
'''

 

posted @ 2018-01-21 09:25  XiaoBBai  阅读(187)  评论(0编辑  收藏  举报