一个*,会把输入参数打包成一个tuple
两个*,会把输入参数打包成一个字典
1 """ 2 可变参数 3 """ 4 5 6 def add(*args): 7 print(args) 8 9 10 add() # 空元组 11 add(1) # (1,) 12 add(1, 2, 3) # (1, 2, 3)
可变参数求和(开发过程中,如果参数个数不确定的情况下)
调用函数,就是找到def定义的那块内存,想办法往里面传值。
系统只要看到*args,系统底层就提前把容器(元组)准备好,如果里面有元素,就将元素装进容器中
1 """ 2 可变参数求和 3 调用函数,就是找到def定义的那块内存,想办法往里面传值 4 系统只要看到*args,系统底层就提前把容器(元组)准备好 5 如果里面有元素,就将元素装进容器中 6 """ 7 8 def add(*args): 9 sum = 0 10 if len(args) > 0: 11 for i in args: 12 sum += i 13 print("累加和是,sum:", sum) 14 else: 15 print("没有元素可计算,sum:", sum) 16 17 18 add() 19 add(1,) 20 add(1, 2, 3)
当可变参数搭配固定参数时
1 """ 2 可变参数搭配不可变参数时,可变参数一定要放在固定参数后面 3 """ 4 5 6 def add(name, *args): # name, *args = "小王", 1, 3, 4 7 sum = 0 8 if len(args) > 0: 9 for i in args: 10 sum += i 11 print("%s累加和是:sum:%s" % (name, sum)) 12 else: 13 print("没有元素可计算:sum:", sum) 14 15 16 add("小王", 1, 3, 4)
可变参数+关键字参数
1 """ 2 关键字参数:key=value 3 默认情况下,按顺序依次赋值 4 """ 5 6 7 def add(a, b=10): # 关键字参数,此时的b就是默认值 8 result = a + b 9 print(result) 10 11 12 add(5) 13 add(3, 7) 14 add(3, b=7) # 此时7就会覆盖b原来的默认值 15 16 print("=========================================") 17 18 def add1(a, b=10, c=4): 19 print(a, b, c) 20 result = a + b + c 21 print(result) 22 23 24 add1(1) 25 add1(1, 3) # 给b赋值3,默认3是赋值给b的 26 add1(1, c=6) # 如想要将6赋值给c,则需要结合关键字的key使用
**kwargs
1 """ 2 只要看到**,系统就自动准备一个字典 3 """ 4 def func(**kwargs): 5 print(kwargs) # 默认转成字典保存 6 7 8 func(a=1, b=2, c=3) # 关键字参数