可变长参数
含义:当我们不确定要传入参数的具体个数的时候,可以选择在定义函数的时候,添加不定长参数。
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': '美女'}
可变长参数测试:
# 不定长参数 *args
def test1(a,b,*args):
print(a,b,args)
# 传递多个参数
test1(1,2,3,4,5,False)
'''
输出结果:
1 2 (3, 4, 5, False)
总结:不定长参数*args以元组的方式进行封装
'''
# 不传不定长参数
test1(1,2)
'''
输出结果:
1 2 ()
总结:如果没有为函数传递不定长参数,默认为空元组
'''
# 思考:如何在函数内从不定长参数取出每一个值呢?
# 不定长参数 **kwargs
def test2(a,b,**kwargs):
print(a,b,kwargs)
# 传递多个参数
test2(1,2,name='lanqiao',age = 18)
'''
输出结果:
1 2 {'name': 'lanqiao', 'age': 18}
总结:不定长参数**kwargs将传入的参数以字典格式封装
'''
# 不传不定长参数
test2(1,2)
'''
输出结果:
1 2 {}
总结:如果没有为函数传递不定长参数,默认为空字典
'''
# *args 与 **kwargs组合
test3(a,b,**kwargs,*args) # 程序报错
'''
总结:不定长参数*args在**kwargs前面顺序不能颠倒
'''
拆包
代码示例:
# 定义一个含有可变长参数的函数
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可变长参数的方法(即在字典前加两个 * 号)来进行拆包,再导入我们的函数中。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本