python-*args和**kwargs作用和区别

Posted 妖怪梧桐

tags:

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

1. *args

不定长的参数:*args 无论你传递一个参数还是二个还是多个都可以。(*args传入的是无命名参数,例如:add(1,2,3,4,5)存储的是元祖)args可以自定义其他名称

def add(*args):
    sum=0
    for i in args:
        sum+=i
        print(sum)
add(1,2,3,4,5)
add(1,2,3)    

2.**kwargs 

  传入的是不定长的命名参数(命名参数存储的是字典,相对于无命名参数存储的是元祖)kwargs可以自定义其他名称

def print_infoo(*args, **kwargs):

    print(args) #(‘alex‘, 18, ‘male‘)

    print(kwargs) #(job=‘IT‘, hobby=‘bo‘)

print_info(‘alex‘, 18, ‘male‘, job=‘IT‘, hobby=‘bo‘ )

  以(*args, **kwargs)这种形式接收的参数就没有接收不到的参数了。

3. *args **kwargs传入一个列表

def func(*args):
    print(args)
    #调用函数打算传入一个列表或者字典,可以这样处理
func(*[1,2,3])

**kwargs处理就加**

func(**{name:Alex, age=19})

4.不定长参数/默认参数/关键参数的位置

  *args放左边,**kwargs参数放在右边,如果有默认参数放左边,关键参数放最左边优先级最高。

  默认参数占位置就会对应个实参

def func(name, sex=‘male‘, *args, **kwargs):
    print(args) 
    #(34,‘female‘)
print_info(1,2,34,female)

 

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

python之路---10 *args **kwargs 命名空间 作用域 函数的嵌套

python之路---10 *args **kwargs 命名空间 作用域 函数的嵌套

python里面args作为参数但是方法体里面没有调用,那这个args的作用是啥?

python之动态参数 *args,**kwargs和命名空间

python-8:函数之二 *args, **kwargs

了解装饰器函数中的作用域和 *args 和 **kwargs