一、函数的动态形参,可以传递不确定个数的形参,有两种形式:
(一) *args ,将所有输入组合成一个元组
def func(*args): print(args,type(args)) # (123, 'fefe', 23, 45) <class 'tuple'> func(123,'fefe',23,45)
(二)**kwargs ,将所有输入组合成一个字典
def func(**kwargs): print(kwargs,type(kwargs)) # {'f': 'fdefe', 'k2': 3} <class 'dict'> func(f='fdefe',k2=3)
(三)*args和**kwargs混合使用,可传递任何形式的参数
def func(p,*args,**kwargs): print(p,type(p)) # 12 <class 'int'> print(args,type(args)) # (43, 'dge') <class 'tuple'> print(kwargs,type(kwargs)) # {'f': 'fdefe', 'k2': 3} <class 'dict'> func(12,43,'dge',f='fdefe',k2=3)
二、函数的动态实参,可以将数组、字典或者元组中每一个元素单独传递
(一)*a将实参中的每一个元素单独传递,a直接将实参作为一个整体传递
def func(*args): print(args,type(args)) a = [1233,'dgreg',34,34] func(a) #([1233, 'dgreg', 34, 34],) <class 'tuple'> func(*a) #(1233, 'dgreg', 34, 34) <class 'tuple'>
(二)**a将实参字典中的每一个元素单独传递
def func(**kwargs): print(kwargs,type(kwargs)) a = {'k1':'a','k2':'b'} func(k1=a) #{'k1': {'k1': 'a', 'k2': 'b'}} <class 'dict'> func(**a) #{'k1': 'a', 'k2': 'b'} <class 'dict'>
浙公网安备 33010602011771号