#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):passfunc(*lst,**dictvar)