# 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‘} ‘‘‘ ‘‘‘ 总结:当你不确定你会传什么参数的时候,第三种是最常用的 ‘‘‘