码迷,mamicode.com
首页 > 编程语言 > 详细

python中*args 和**kwargs的用法

时间:2020-02-26 17:13:46      阅读:76      评论:0      收藏:0      [点我收藏+]

标签:必须   def   com   turn   nis   图片   sch   http   多个   

函数的参数不确定时,可以使用*args 和**kwargs,*args 没有key值,**kwargs有key值。

  这样说吧:这个是Python函数可变参数args及kwargs

    *args表示任何多个无名参数,它是一个tuple

    **kwargs表示关键字参数,它是一个dict

是不是这样说理论,听起来还是有点迷,那我就举个例子把

先举*args:

def highschool_class(number,*args):
 
    print("the highschool_class  has %s "%number)  #高中一个班级的人数
    print(*args)
    return (args)
 
 
highschool_class(59,30,29)

结果是:

the highschool_class  has 59
30 29
 
Process finished with exit code 0

 

下面举例**kwargs:

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‘)

结果是:

the highschool_class  has 59
30 29
{‘male‘: ‘30‘, ‘female‘: ‘29‘}
 
Process finished with exit code 0

 

结合起来对比一下,我们对*args和**kwargs不输值,这样更清晰:

def highschool_class(number,*args,**kwargs):
 
    print("the highschool_class  has %s "%number)  #高中一个班级的人数
    print(*args)
    print(kwargs)
    return (args,kwargs)
 
 
highschool_class(59)

结果:

the highschool_class  has 59
 
{}
 
Process finished with exit code 0

 

其实用调试可以看的更清楚:

技术图片

  这下对这两个可变参数的用法很清晰了吧,下面总结一下,*args表示任何多个无名参数,它是一个tuple;**kwargs表示关键字参数,它是一个dict。并且同时使用*args和**kwargs的时候,*args必须在**kwargs前面。

  当然,也可以分开单独使用这两个参数,下面举一个经典的例子,就是创建字典:

def class_dict(**kwargs):
    print(kwargs)
    return kwargs
 
class_dict(a=1,b=2,c=3,d=4)

  结果:

{‘a‘: 1, ‘b‘: 2, ‘c‘: 3, ‘d‘: 4}
 
Process finished with exit code 0

python中*args 和**kwargs的用法

标签:必须   def   com   turn   nis   图片   sch   http   多个   

原文地址:https://www.cnblogs.com/tu240302975/p/12367671.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!