函数的传参:形参第三种参数:万能参数
1.1 *args
当给函数传入的参数数目不定时,之前的传参方式解决不了问题。这是就要用到万能参数,就是动态参数:*args
def eat(*args): # 将实参角度:定义一个函数时,* 所有的位置参数聚合到一个元组中。
print(args)
print(f'我请你吃:{args}')
# eat('蒸羊羔','蒸熊掌','蒸鹿尾','烧花鸭','烧企鹅')
这时候所有的位置参数都聚合到一个元组中
函数接收不定个数的数字实参,将最终的和返回出去.
def sum1(*args):
# print(args) (100, 2, 67, 3)
result = 0
for i in args:
result += i
return result
print(sum1(100,2,67,3))
1.2 kwargs**
def func(**kwargs):
print(**kwaargs)
func(name = "谭伟",age = "10",hobby = "唱跳")
而这个函数在定义时:**kwargs将实参角度所有的关键字参数聚合成了一个空字典,给了kwargs
1.3 *args, **kwargs
这个是万能参数
def func(*args,**kwargs):
print(args,kwargs)
func(1,2,4,'fjdksal',age=84,hobby='唱跳rap篮球')
1.4*的魔性用法
l1 = [1, 2, 3]
l2 = ['太白', 'wusir', '景女神']
# func(l1,l2)
# func(*l1,*l2) # 当函数的执行时:*iterable 代表打散。
func(*[1, 2, 3],*(11,22),*'fdsakl') # 当函数的执行时:*iterable 代表打散。
当是函数的执行时,这个时候*就起到了打散的作用
# def func(*args,**kwargs):
# print(args)
# print(kwargs)
# func(**{'name':"alex"},**{'age': 73,'hobby': '吹'})
当函数的执行时:dict 代表打散**。
函数外:处理剩余元素
# a,b,*c = [1,2,3,4,5]
# a,*c,b, = [1,2,3,4,5]
# a,*c = range(5)
# a,*c,b = (1,2,3,4,5,6)
# print(a,c,b)
这个就是相对应的元素取一一对应,然后*将剩下的元素进行整合