python中* args和* * kwargs的使用分析

  

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;}

<李>

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

python中* args和* * kwargs的使用分析