python中-args 和--kwargs的用法

       小编很喜欢在博客里面写上对一些小问题的见解,其实许多小问题不解决的话,最后对学习Python也是很难,所以说我学习python 这个东西的话,还是比较注重细节,一直听老师讲课,都在用*args 和**kwargs这两个参数,那许多人也都拿来用,跟着老师照猫画虎,但是真的知道其含义吗?

    函数的参数不确定时,可以使用*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

  

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值