python 错题本
1.可边长参数
def func(*ags, **kw):
pass
* 在函数的形参中,可以接受多余的位置参数,并利用一个元组来记录。例如func(1,2,3,4,5, name='lll', age=12) ags就是 (1,2,3,4,5)
**在函数的形参中,可以接受多于的关键字参数,并利用一个字典来记录,例如func(1,2,3,4,5, name='lll', age=12), kw就是 {"name":'lll', 'age':12}
*在函数的实参中,可以将一个可迭代类型,转化成一个元组来记录,例如func(*"helloworld"), ags就是(‘h’, 'e','l','l', 'o', 'w', 'o', 'r', 'l', 'd'), 如果是字典的话,ags就是key值的集合。
def func(a, b, c, d, name, age, *ags, **kw):
print(a)
print(b)
print(name)
print(age)
print(ags, kw)
func(1,3,'fe', 'f3efe', 6, 8, 10, psw=20, *[1,2,3], **{"height":1.81}) #这种不会报错
前边的a、b、c、d、nage、age这种是位置参数,关键字参数赋值之前,关键字参数之前的位置参数都必须赋值完成。
例如name是第五个参数,如果通过name='张三'这种方式赋值的时候,如果name这个参数前 <4个的位置参数,例如只给了三个, 那缺的位置参数会从*ags中去取,剩下的就是ags参数的元组值。
例如 func(1,3,'fe', psw=20, *[11,12,13], **{"height":1.81}) #d=11, name=12, age=13,ags=(), kw={"name":'lll', 'age':12}
如果name这个参数前 >4个的位置参数,例如给了5个,就会报错,程序会给name赋两个值,导致程序直接报错。
如果给了关键字参数,后边再无法跟位置参数了,例如 func(psw=20, 1,3,'fe', *[11,12,13], **{"height":1.81}) ,这样会直接报错。因为程序无法识别后边的位置参数。
func(1,3,'fe', psw=20, *[11,12,13], **{"height":1.81}) #name=12, age=13
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix