python中* args和* * kwargs的使用分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
<强>一简介强>
* args和* * kwargs主要用于函数定义。当我们需要定义的函数的传入参数个数不确定时,可以使用* args和* * kwargs代替不确定的参数个数。其实并不是必须写成* args和* * kwargs。只有变量前面的*(星号)才是必须的。我们可以写成* var和* * var。而写成* args和* * kwargs只是一个通俗的命名约定。
<强>二使用强>
<强> 2.1 * args 强>
当函数的参数个数不确定且不需要指定参数名称时,* args的格式是常规的参数val1 [val2, val3 ....]
- <李>
前受奖人def func_arg (,, * args):
,,,print “正式的参数:“前受奖人,,
,,,for arg 拷贝参数:
,,,,,,,print “另一个参数:“,,arg
func_arg (1,“youzan" & # 39; dba # 39;)
输出,
拷贝[10]:,args (1,“youzan", & # 39; dba # 39;)
正式的参数:1
另一个参数:,youzan
另一个参数:,dba
李> <强> 2.2 * * kwargs 强>
当函数的参数是有名称且不确定个数的时候,可以使用* * kwargs。* * kwargs的参数格式是key1=value1, [key2=value2, key3=value3 ....),函数对* * kwargs是以键值对类似字典的方式进行解析。
- <李>
前受奖人def func_kwargs (,, * * kwargs):
,,,print “正式的参数:“前受奖人,,
,,,for key 拷贝kwargs:
,,,,,,,print “关键字参数:% s: % s", %,(关键,,kwargs[主要])
输出
拷贝[15]:,func_kwargs (1, id=1, name=& # 39; youzan& # 39;,,城市=& # 39;杭州# 39;)
正式的参数:1
关键字参数:城市:杭州
关键字参数:id: 1,
关键字参数:名称:,youzan
李> * * kwargs还有一个功能就是转换参数为字典
- <李>
拷贝[1]:,def kw_dict (* * kwargs):
,,…:返回kwargs
,,…:
拷贝[2]:,打印kw_dict (a=1, b=2, c=3)
{& # 39;一个# 39;,,1,,& # 39;c # 39;:, 3, & # 39; b # 39;:, 2}
李> <强> 2.3综合的例子
强>
- <李>
拷贝[3]:,def foo (* args,, * * kwargs):
,,…:print & # 39; args=& # 39;,, arg游戏
,,…:print & # 39; kwargs=& # 39;,, kwargs
,,…:print & # 39; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # 39;
,,…:
拷贝[4]:,foo (1, 2, 3, 4)
args =, (1,, 2,, 3,, 4)
kwargs =, {}
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
拷贝[5]:,foo (a=1, b=2, c=3)
args =, ()
kwargs =,{& # 39;一个# 39;,,1,,& # 39;c # 39;:, 3, & # 39; b # 39;:, 2}
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
拷贝[6]:,foo (1、2、3、4, a=1, b=2, c=3)
args =, (1,, 2,, 3,, 4)
kwargs =,{& # 39;一个# 39;,,1,,& # 39;c # 39;:, 3, & # 39; b # 39;:, 2}
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
拷贝[7]:,foo(& # 39;一个# 39;,,1,,没有,,a=1, b=& # 39; 2 & # 39;,, c=3)
args =,(& # 39;一个# 39;,,1,,也没有)
kwargs =,{& # 39;一个# 39;,,1,,& # 39;c # 39;:, 3, & # 39; b # 39;:, & # 39; 2 & # 39;}
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -