万能参数

函数的传参:形参第三种参数:万能参数

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)

这个就是相对应的元素取一一对应,然后*将剩下的元素进行整合

posted @ 2019-06-18 21:58  前一秒  阅读(142)  评论(0编辑  收藏  举报