*args和**kwargs很多程序员往往需要花很多时间去理解这两个神奇的变量。没有必要写*args和**kwargs。只有前面几个是必须的,也可以写成var和**vars。编写*args和**kwargs是一种流行的命名约定。*args用于函数定义。可以将不定数量的参数传递给函数。*args用于将不是键值对的可变数量的参数列表发送到函数。demodeftest_args(test_arg,*args):print("firstparameter=",test_arg)forarginargs:print("arg=",arg)test_args("python","c++","java","c","javaweb")运行结果:第一个参数=pythonarg=c++arg=javaarg=carg=javaweb**kwargs的用法用于函数定义。可以将不定数量的参数传递给函数。**kwargs允许您将可变长度的键值对作为参数传递给函数。如果你想在函数内部处理命名参数,你应该使用**kwargs。demodeftest_kwargs(**kwargs):对于键,kwargs.items()中的值:print("{0}=={1}".format(key,value))test_kwargs(name1="java",name2="python")运行结果:name1==javaname2==python使用args和*kwargs调用函数dedeffun_args(arg1,arg2,arg3):print("arg1=",arg1)print("arg2=",arg2)print("arg3=",arg3)使用*args调用函数args=("c","java","c++")fun_args(*args)*args运行结果:arg1=carg2=javaarg3=c++使用**kwargs调用函数kwargs={"arg3":"c++","arg1":"c","arg2":"java"}fun_args(**kwargs)**kwargs运行结果:arg1=carg2=javaarg3=c++standardTheorderofparametersand*args,**kwargswhenusefunc(arg0,*args,**kwargs)什么时候使用它们是最常见的:用于编写函数装饰器时的猴子修补(monkeypatching)上面代码实测python版本:3.7.0
