*args和**kwargs的用法

Posted 老王的农场

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了*args和**kwargs的用法相关的知识,希望对你有一定的参考价值。

从实参角度,看*args的用法:

按位置传值,多出来的值,会被*统一接收,保存成元组的形式。并赋值给args。

*args需要放到位置参数x的后面

*args与y=1一般不会放到一起用

args=元组()

*args=*(x,y,z)

*当成位置参数看

**当成关键字来看

def foo(x,*grgs):   #args=(2,3,4,5,6,‘a‘,‘b‘)
      print(x)
      print(args)

foo(1,2,3,4,5,6,‘a‘,‘b‘)

 

def foo(x,y=1,*args):
	print(x)
	print(y)
	print(args)

foo(1,2,3,4,5,6,7,8) 

 *args与位置参数用

def foo(x,*args,y=1): #*args也是位置函数
	print(x)
	print(y)
	print(args)

foo(1,2,3,4,5,6,7,8,y=10)

#一般而言,*args,与y=1,不会放到一起用

  从形参的角度:把*args当成位置参数看

def foo(*args):
    print(args)
foo(1,2,3)

结果:(1,2,3)

  从实参的角度看:

def bar(x,y,z):
     print(x)
     print(y)
     print(z)
bar(*(1,2,3))


结果:
1
2
3

  

#**kwargs

按关键字传值多余的,交给**去处理,把这部分做成字典的形式,赋值给kwargs。

def foo(x,**kwargs):
      print(x)
      print(y)

foo(x=1,y=2,a=3,b=4)
foo(x,y=2,a=3,b=4)#不能重复赋值

  

def foo(x,*args,**kwargs):
     print(x)
     print(args)
     print(kwargs)

foo(1,y=1,z=2)

#按位置放在按照关键字之前

 

 

以上是关于*args和**kwargs的用法的主要内容,如果未能解决你的问题,请参考以下文章

Python中*args 和 **kwargs的用法总结

python中*args 和**kwargs的用法

Python中*args 和**kwargs的用法

*args和**kwargs的用法

python3进阶之*args与**kwargs用法

python中*args 和**kwargs的用法