python中*args 和**kwargs的用法
小编很喜欢在博客里面写上对一些小问题的见解,其实许多小问题不解决的话,最后对学习Python也是很难,所以说我学习的话,还是比较注重细节,一直听老师讲课,都在用*args 和**kwargs这两个参数,那许多人也都拿来用,跟着老师照猫画虎,但是真的知道其含义吗?
函数的参数不确定时,可以使用*args 和**kwargs,*args 没有key值,**kwargs有key值。
这样说吧:这个是Python函数可变参数args及kwargs
*args表示任何多个无名参数,它是一个tuple
**kwargs表示关键字参数,它是一个dict
是不是这样说理论,听起来还是有点迷,那我就举个例子把
先举*args:
1 2 3 4 5 6 7 8 | def highschool_class(number, * args): print ( "the highschool_class has %s " % number) #高中一个班级的人数 print ( * args) return (args) highschool_class( 59 , 30 , 29 ) |
结果是:
1 2 3 4 | the highschool_class has 59 30 29 Process finished with exit code 0 |
下面举例**kwargs:
1 2 3 4 5 6 7 8 9 | def highschool_class(number, * args, * * kwargs): print ( "the highschool_class has %s " % number) #高中一个班级的人数 print ( * args) print (kwargs) return (args,kwargs) highschool_class( 59 , 30 , 29 ,male = '30' ,female = '29' ) |
结果是:
1 2 3 4 5 | the highschool_class has 59 30 29 { 'male' : '30' , 'female' : '29' } Process finished with exit code 0 |
结合起来对比一下,我们对*args和**kwargs不输值,这样更清晰:
1 2 3 4 5 6 7 8 9 | def highschool_class(number, * args, * * kwargs): print ( "the highschool_class has %s " % number) #高中一个班级的人数 print ( * args) print (kwargs) return (args,kwargs) highschool_class( 59 ) |
结果:
1 2 3 4 5 | the highschool_class has 59 {} Process finished with exit code 0 |
其实用调试可以看的更清楚:
这下对这两个可变参数的用法很清晰了吧,下面总结一下,*args表示任何多个无名参数,它是一个tuple;**kwargs表示关键字参数,它是一个dict。并且同时使用*args和**kwargs的时候,*args必须在**kwargs前面。
当然,也可以分开单独使用这两个参数,下面举一个经典的例子,就是创建字典:
1 2 3 4 5 | def class_dict( * * kwargs): print (kwargs) return kwargs class_dict(a = 1 ,b = 2 ,c = 3 ,d = 4 ) |
结果:
1 2 3 | { 'a' : 1 , 'b' : 2 , 'c' : 3 , 'd' : 4 } Process finished with exit code 0 |
不经一番彻骨寒 怎得梅花扑鼻香
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步