*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)

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

 

原文地址:https://www.cnblogs.com/catherine007/p/8227675.html

时间: 2024-11-10 13:52:37

*args和**kwargs的用法的相关文章

python的*args和**kwargs基础用法

*args表示任何多个无名参数,它是一个tuple **kwargs:传入的字典,就如:a=1,传入键值,默认就传入到**kwargs中,如下面代码: class FOO: def __init__(self): pass def __call__(self,*args,**kwargs): print "__call__" for value in args:#直接显示内容 print "anther,args:",value print u"以下是做累

Python中*args 和**kwargs的用法

from:http://blog.csdn.net/chenjinyu_tang/article/details/8136841 好久没有学习python了,应为工作的需要,再次拾起python,唤起记忆. 当函数的参数不确定时,可以使用*args 和**kwargs,*args 没有key值,**kwargs有key值. 还是直接来代码吧,废话少说 [python] view plaincopyprint? def fun_var_args(farg, *args): print "arg:&

python基础-python中*args和**kwargs的用法

当函数的参数不确定时,可以使用*args 和**kwargs,*args 没有key值,**kwargs有key值 *args 可以容纳多个变量组成的list 1 def test2(name,age,gender): 2 print(name) 3 print(age) 4 print(gender) 5 6 def test1(*args,**kwargs): 7 test2(*args,**kwargs) 8 9 test1('alex', 18, 'male') #这三个参数,全部传给了

Python函数中*args和**kwargs来传递变长参数的用法

参考自: http://www.jb51.net/article/78705.htm 单星号形式(*args)用来传递非命名键可变参数列表.双星号形式(**kwargs)用来传递键值可变参数列表. 1. 传递了一个固定位置参数和两个变长参数. def test_var_args(farg, *args): print "formal arg:", farg for arg in args: print "another arg:", arg test_var_arg

*args和**kwargs

先来看个例子: ef foo(*args, **kwargs): print 'args = ', args print 'kwargs = ', kwargs print '---------------------------------------' if __name__ == '__main__': foo(1,2,3,4) foo(a=1,b=2,c=3) foo(1,2,3,4, a=1,b=2,c=3) foo('a', 1, None, a=1, b='2', c=3) 输出结

(转)Python中的*args和**kwargs

本文转自:http://kodango.com/variable-arguments-in-python 作者:团子的小窝 Python是支持可变参数的,最简单的方法莫过于使用默认参数,例如: def test_defargs(one, two = 2): print 'Required argument: ', one print 'Optional argument: ', two test_defargs(1) # result: # Required argument: 1 # Opti

理解 Python 中的 *args 和 **kwargs

Python是支持可变参数的,最简单的方法莫过于使用默认参数,例如: def test_defargs(one, two = 2): print 'Required argument: ', one print 'Optional argument: ', two test_defargs(1) # result: # Required argument: 1 # Optional argument: 2 test_defargs(1, 3) # result: # Required argum

学习python的*args和 **kwargs

*args表示任何多个无名参数,它是一个tuple(元组):**kwargs表示关键字参数,它是一个dict(字典) 1 def foo(*args, **kwargs): 2 print 'args = ', args 3 print 'kwargs = ', kwargs 4 print '###' 5 if __name__ == '__main__': 6 foo(1,2,3,4) 7 foo(a=1,b=2,c=3) 8 foo(1,2,3,4, a=1,b=2,c=3) 9 foo(

(转)python中的参数:*args和**kwargs

def foo(*args, **kwargs):print 'args = ', argsprint 'kwargs = ', kwargsprint '---------------------------------------'if __name__ == '__main__':foo(1,2,3,4)foo(a=1,b=2,c=3)foo(1,2,3,4, a=1,b=2,c=3)foo('a', 1, None, a=1, b='2', c=3) 输出结果如下:args = (1,