[Tips]python的*args和**kwargs

当函数的参数不确定时,可以使用*args 和**kwargs,*args 以元组方式存贮,**kwargs是字典格式。

*args

def ff(*args):
    for value in args:
        print "arg:", value
 
ff(1, "two", 3) # *args可以当作可容纳多个变量组成的元组

  

**kwargs

def ff(**kwargs):
    for key in kwargs:
        print "keyword arg: %s: %s" % (key, kwargs[key])

  

args代表的是位置参数,而kwargs代表的是关键字参数。

位置参数:在函数定义阶段,按照从左到右的顺序定义的形参,称为位置形参 特点:但凡是按照位置定义的形参。都必须被传值,多一个不行,少一个也不行。

关键字实参:在调用函数时,按照key=value的形式为指定的参数传值,称为关键字实参 特点:打破位置的限制,但仍能为指定的形参赋值 foo(y=1,x=2)

 注意,此时args和kwargs在函数内部直接用的时候,分别是元组和字典,如果想把他们依然按照不定参数的方式传递给其他函数(比如对print函数做个包装,将包装函数中传给print函数的参数传给print函数,见示例),那就继续使用*args和**kwargs。

def ff(*args, **kwargs):
    print(args[0])
    for k,v in kwargs.items():
      print(k, v)
    print(*args)

  

posted @ 2019-08-30 15:15  虚无真仙  阅读(205)  评论(0编辑  收藏  举报