含义:当我们不确定要传入参数的具体个数的时候,可以选择在定义函数的时候,添加不定长参数。
print 函数代码示例:
a = 10 b = True c = 1.1 d = "你好" print(a) print(a,b) print(a,b,c) print(a,b,c,d) ''' 输出结果: 10 10 True 10 True 1.1 10 True 1.1 你好 '''
应用场景:
# 计算两个数的和 def sum_test(a,b): result = a + b return result sum = sum_test(45,25) print(sum) # 输出结果:70
# 根据情况计算传入的数值的和(可运用可变长参数args) def sum_test(a,b,*args): # *args是比较规范的可变长参数 print(" a = ",a) print(" b = ",b) print(" args = ",args) sum_test(45,12,85,26,70) """ 输出结果: a = 45 b = 12 args = (85, 26, 70) # 可变长参数将多余的元素都输出为元组 """
定义格式1:
def 函数名称(参数1,参数2,* 可变长参数):
重点:
1、除去必要的参数之外,多余的参数都被可变长参数接收,并且封装成元组;
2、可变长参数可以不传,输出的是空元组;
3、可变长参数只能放在参数列表后面;
4、使用场景:当我们不确定传入的参数类型为单个的时候
代码示例:
# 根据情况计算传入的数值的和(可运用可变长参数args) def sum_test(a,b,*args): # *args是比较规范的可变长参数 # 计算a,b的值 result = a + b # 取出可变长参数args的值(通过循环从元组取值) for i in args: result += i return result print(sum_test(45,12,85,26,70)) # 输出结果:238
定义格式2:
def 函数名称(参数1,参数2,** kwargs)
重点:
1、kwargs 接收的参数类型为:参数名称 = 参数值(以字典的形式进行封装)
2、该参数可不传递,输出是空字典;
3、该类型可变长参数只能放在参数列表的最后面;
代码示例:
# kwargs可变长参数 def sum_test(a,b,**kwargs): print(a,b,kwargs) sum_test(25,58,name="美女",sex="女") # 输出结果:25 58 {'name': '美女', 'sex': '女'} # args和kwargs混用 def sum_test(a,b,*args,**kwargs): print(a,b,args,kwargs) sum_test(25,58,452,5401,5413,name="美女") # 输出结果:25 58 (452, 5401, 5413) {'name': '美女'}
代码示例:
# 定义一个含有可变长参数的函数 def test(a,b,*args,**kwargs): print(a) print(b) print(args) print(kwargs) A = (1,3,5,6) B = {"姓名":"美丽"} # 自动拆包,将元组拆分成一个个元素,将字典拆成键值对传递进去 test(11,12,13,14,15,*A,**B) # test(11,12,13,14,15,1,3,5,6,姓名="美丽") """ 输出结果: 11 12 (13, 14, 15, 1, 3, 5, 6) {'姓名': '美丽'} """
应用场景:假设我们需要处理用户信息,我们设置的函数需要键值对导入信息,而用户的信息有可能是别的用户给我们的,这些数据有可能是一个字典,而我们的函数需要拆分这个字典,取得键值对,放入函数当中,我们可以把这个字典用kwargs可变长参数的方法(即在字典前加两个 * 号)来进行拆包,再导入我们的函数中。