python学习笔记:什么事*args和**kwargs?

Posted

tags:

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

一.*args和**kwargs原理

 先看个例子:

def test(*args,**kwargs):
    print("args =",args)
    print("kwargs =",kwargs)
    print("----------------------------------")
if __name__ == __main__:
    test(1,5,94,564)
    test(a=1,b=2,c=3)
    test(1,2,3,4,a=1,b=2,c=3)
    test(I love python,1,None,a=1,b=2,c=3)
#输出:
args = (1, 5, 94, 564)
kwargs = {}
----------------------------------
args = ()
kwargs = {a: 1, b: 2, c: 3}
----------------------------------
args = (1, 2, 3, 4)
kwargs = {a: 1, b: 2, c: 3}
----------------------------------
args = (I love python, 1, None)
kwargs = {a: 1, b: 2, c: 3}
----------------------------------

可以看到这两个是python中的可变参数,*args表示任何多个无名参数,他是个tuple,**kwargs表示关键字参数,它是个dict。在同时使用*args和**kwargs时,必须*args参数列要在**kwargs前面,要是test(a=1,b=2,c=3,1,2,3,4)这样调用的话肯定会报语法错误的!

二.使用**kwargs创建字典:

def kw_dict(**kwargs):
    return kwargs
print(kw_dict(k1=v1,k2=v2,k3=v3))
#执行结果:
{k3: v3, k2: v2, k1: v1}

 

以上是关于python学习笔记:什么事*args和**kwargs?的主要内容,如果未能解决你的问题,请参考以下文章

Python 学习笔记 - 线程

简明Python教程学习笔记7

Python 学习笔记三

Python学习笔记010——匿名函数lambda

python学习笔记——Day 3

pythonの函数学习笔记