#coding:utf-8 """ #第一种写法 """ def func(a,b,c,*,d): print(a,b,c) print(d) func(1,2,3,d=4) """ #第二种写法 """ def func(*args,b,c,**kwargs): print(args) print(kwargs) print(b,c) # 函数调用处 func(1,2,3,4,5,56,a=1,b=2,c=3,d=4,f=5) print("<====>") #(3)命名关键字可以指定默认值 def func(a,b,*,c=1,d=5): print(a,b) print(c,d) func(5,6) # * 和 ** 的魔术用法 """ 在函数定义处: * 和 ** 作用:打包 (比如普通收集参数和关键字收集参数) 在函数调用处: * 和 ** 作用:解包 好处: 可以控制参数的长度(优点) 动态产生不定长参数调用时需要用到 * 可以对应str list tuple ** 可以对应dict """ def func(a,b,c,*,d): print(a,b,c) print(d) # 函数调用处 lst = [1,2,3] func(*lst,d=90) def func(a,b,c,*,d,e,f): print(a,b,c) print(d,e,f) # 函数调用处 dictvar = {"d":11,"e":12,"f":13} func(1,2,3,**dictvar) # func(1,2,3,d=11,e=12,f=13) #同上**dictvar效果的一样 def func(*args,**kwargs): pass func(*lst,**dictvar)