*args和**kwargs

*args和**kwargs

相信大家对于*args和**kwargs并不陌生,当你不确定传入函数中的东西时,可以使用他们哥俩;当然他们所拥有的能力都是来自于神奇的*,arg,kwargs本身并没有这么大的能力;只是python中我们约定俗成的使用他们;也就是说,使用*args和**kwargs只是为了方便并没有强制使用它们。好了,废话不多说,下面进入正题:

通常情况下,我们向函数中传入参数,通常是已经确定的,比如:

def check ( a ):
print ( ' {0} ' .format(a))
check( 1 )

此时调用check()函数传入实参1;函数形参a赋值1并引入函数中进行操作;然而在一个形参而传入两个参数时:

def check ( a ):
print ( ' {0} ' .format(a))
check( 1 , 2 )

此时系统就会告诉我们typeError:因为人家只要了一个参数,你却给我两个;肚子吃的太撑,当然会出bug

而此时我们的*args的作用就体现出来了:

def sb(*args):

 for count , thing in enumerate(args):

  print('{0}.{1}'.format(count , thing))

sb('zhangsan' , 'lisi' , 'wangwu')

如上所示,不管我们传入多少个参数,我一样吃得下;

相似的,**kwargs允许你使用没有事先定义的参数名:即字典

def dsb(**kargs):

 for name , value in kargs.items():

  print('{0} = {1}'.format(name , value));

dsb(apple = "fruit" , sb = "zhangsan")


综上所述;用通俗的话来讲也就是;*args是管不确定的单个参数的 **kwargs则是对应字典的,也就是键值对;

当然,你也可以两个混着用,但是他们有个怪脾气,那就是*args必须在**kwargs前面:




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值