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
posted @   往昔遗忘  阅读(83)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示