python函数参数*args 与 **kwargs浅析

首先我们来了解一下python的函数传参方式。
①位置传参:即我们常用的实参与形参按顺序一对一传参。
②关键字传参:按照key=value的形式传入值的方式被称为关键字传参,可以打破顺序为形参进行传值。注意:若使用关键字传参需注意必须跟在位置传参的后面。
例:

  def func(school,class,name):
  		print(school,class,name)
  func(school='hnu',class='shiyanban',name='luo')

*args

*是一种语法,args是一种约定俗称。如果定义一个函数时不知道使用者要用位置传参的方式传入多少个实参,可使用*args来进行接收所有多余的被传入的实参,这些多余的被传入实参会被打包成元组类型。(在实参中也可以使用*[1,2,3]来传参。)
例:

def func(school,aclass,name,*args):
  		print(school,aclass,name)
  		print(args)  #这里输出(1, 2, 3)
func('hnu','shiyanban','luo',1,2,3)

**kwargs

也是一种语法。kwargs则是后面形参名的约定俗称。如果定义一个函数时不知道使用者要用关键字传参的方式传入多少个实参,可使用kwargs来进行接收所有多余的被传入的实参,这些多余的被传入实参会被打包成字典类型。(在实参中也可以使用**{x:1,y:2,z"3}来传参。)
例:

def func(school,aclass,name, **kwargs):
  		print(school,aclass,name)
  		print(kwargs)  #这里输出{'x': 1, 'y': 2, 'z': 3}
func('hnu','shiyanban','luo',x=1,y=2,z=3)

*args与 **kwargs组合

def register(name, age, *args, gender="male", hobby, **kwargs):
    
    print(f"{name}")  # Yunya
    print(f"{age}")  # 18
    print(f"{gender}")  # male
    print(f"{args}")  # (‘a‘, ‘b‘, ‘c‘)
    print(f"{hobby}")  # (‘篮球‘, ‘足球‘, ‘兵乓球‘)
    print(f"{kwargs}")  # {‘other‘: ‘暂无‘}


register("Yunya", 18, "a", "b", "c", hobby=("篮球", "足球", "兵乓球"), other="暂无")
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值