首页 > 代码库 > python中函数参数*args和**kw的区别

python中函数参数*args和**kw的区别

1.函数与参数(实参)  

  在python中创建函数是def,创建函数名是def f(),f函数名字,def f(a,b),这里的a,b是两个参数,函数名是自定义的,参数也是自定义,随意就好。看图如下效果:

  技术分享

  这里f(1,2)是实参,然后调用上面的函数。

  下面讲解下*args和**kw的区别。

2.*args

  技术分享

  这里的*后面的值是自定义的,只要不是数字就行,定义成*abc,*ccc都可以,len()是函数,它的意思是返回字符串长度。然后前面的a,b是普通参数,print a print b就是回显1,2,因为我调用f(1,2,3,4,5),除去两个普通参数,剩余的三个值为4,5,6,顾名思义长度为3。

3.**kw

  技术分享

  **和*自定义都是一样的,**后面也是自定义,后面不是数字就行。我这里定义的是**d,这里就和*不一样,这里你们会发现这里多了个循环,然后在print ,你们有可能看不懂,你们把眼光看到底下的f()的函数调用,调用最后的答案为一个键值对的形式,然后再看上面的print x+‘:‘+str(c[x])就会变得轻松,你们会说str是什么,str()是一个函数,他的含义是可以将数字型变量或常量改变成字符型变量或常量。所以当我们调用他时,name=‘zhangsan‘这里就要加引号,因为这是字符串,而age=13却不要加引号,因为13是整数类型。

4.*和**联合用法

  技术分享

  因为我前面分开讲了*和**的用法,合并起来,他们不变,位置上没有变化。当你看到这里你会说*和**有什么区别,是的,他们的区别在于,*是包含其他数字的,在这里面*c是一个tuple,而**d在这里包含的是字符串或者根据print x+‘:‘+str(d[x]),判断类型为xx=xx的,包含于d里面,这样我们就能很清晰的去区分并且学习它!

python中函数参数*args和**kw的区别