1.参数的基本知识
- 任意个数
- 任意类型
def func(a1,a2,a3): print(a1,a2,a3) # 参数可以是任意个数和任意类型 func(1,'waf',True)
2.位置传参数(调用函数并传入参数)
实参数量和形惨数量要保持一致,并且顺序保持一致
3.关键字传参数
def func(a1,a2): print(a1,a2) # 实参直接给形参赋值,顺序可以调整 func(a2 = 'wdc',a1 = 123)
#关键字传参和位置传参可以混合使用
def func(a1,a2,a3): print(a1,a2,a3) # 但必须把位置传参放前面。关键字传参放后面 func('wdc',123,a3='rwq')
4.默认参数
# 在定义函数时,可以设置默认函数的值,a3的参数可以传可以不传 # 如果传的话,参数为传的值,如果不传则为默认值 def func(a1,a2,a3='yhf'): print(a1,a2,a3) func(123,'wdc')
func(123,'wdc','qweqe')
5.万能参数(打散)
*args
# *args将所有获取到的参数放到一个元组里面,*a可以接受任意个参数 def func(*args): print(args) func(123,'wdc') func(123,'wdc','qweqe',(1,2,3))
def func(*args):
print(args)
# 元组里面套个元组
func((11, 22, 33, 44, 55))# a = ((11, 22, 33, 44, 55),)
# 元组前面带*可以将元组打散
func(*(11,22,33,44,55))# a = (11, 22, 33, 44, 55)
# 第一个参数给a1,其他参数给args
def func(a1,*args):
print(a1,args)
func('wdc',123,456,789)
# 这种情况下a2只能用关键字传参数
def func(a1,*args,a2):
print(a1,args,a2)
func('wdc',123,456,789,a2='yhf')
#不支持关键字传参,只支持位置传参
**kwargs
# 可接受任意个关键字参数 # **v1只能传关键字参数,生成一个字典{k1:1,k2:2} def func(**kwargs): print(kwargs) func(k1 = 1,k2 = 2)
def func(**kwargs):输出结果:
print(kwargs)
# 传递字典参数
func(**{'k1':1,'k2':2})
func(k1 = {'k1':1,'k2':2})

综合应用
# 真·万能参数 def func(*args,**kwargs): print(args,kwargs) func(1,2,3,k1 = 123,k2 = 'wdc') func(*(1,2,3),k1 = 123,k2 = 'wdc') func(*(1,2,3),**{'k1':123,'k2':'wdc'},k3 = 'yhf')