*args 和 **kwargs 可以将不定数量的参数传递给函数
*args 和 **kwargs,前者适用于 传入非键值对的可变数量的参数列表,后者适用于 传入不定长度的键值对, 作为参数传递给函数
**kwargs 就是在*args 的基础上,添加了变量名以及转变了格式
如下所示:
先定义一个函数:
def test(farg,arg1,arg2,arg3): print("farg参数为:",farg) print("arg1为",arg1) print("arg2为",arg2) print("arg3为",arg3)
调用函数时先用*args传参:
dic = (1,"你好","hello",9.0) test(*dic)
以及 用**kwargs 传参:
dic ={"farg":1,"arg1":"你好","arg2":"hello","arg3":9.0} test(**dic)
结果输出都为:
两种方式的传参方式的不同之处在于:
传入的参数格式 一个为字典,一个为元祖,一个要加一个 星号 * ,一个要加两个星号 **
以上的例子是将*args 和 **kwargs应用在调用函数时,如果应用在定义函数的参数时会是怎样的呢?一起来看看呗
想要定义一个函数,但又不知道传入多少个参数的时候,就可以将*args or **kwargs 放在函数的参数定义中了
def test(*args): for arg in args: print("{}的值为:".format(arg),arg) print(args[0]) print(args[1]) print(args[2]) print(args[3]) print(args[4])
结果为:
def test(**kwargs): for key,value in kwargs.items(): print("{}的值为{}".format(key,value))
dic = {"1":"1","2":"2","3":3,"4":4,"5":5}
test(**dic)
结果为:
相比之下,因为**kwargs 传入的只能时键值对,字典类型,所以在处理传入的参数是也要相应地用字典的处理方式。
就看各位怎么用了,怎样顺手就那样用了。
我怀疑这博客园是不是没人了,我这博客是不是没人看了,既然你都看到这里,顺便给我点个赞呗!
多谢多谢!哈哈哈哈哈哈哈哈