*args和**kwargs的区别
本菜鸡最近在学习python,看到*args和**kwargs的时候有点头晕,然后搜一些大神的理解,整理如下:
*ags的用法
*args将参数打包成元组的形式供函数调用
def args_test(x,*args):
print(x,args)
args_test(1,2,3,4)
运行结果为:
1 (2, 3, 4)
**kwargs的用法
**kwargs将关键字参数打包成字典的形式功函数调用
def kwargs_test(**kwargs):
print(kwargs)
kwargs_test(a=1,b=2,c=3)
运行结果为:
{‘a’: 1, ‘b’: 2, ‘c’: 3}
参数arg、*args、**kwargs的位置不能改变,必须是(arg,*args,**kwargs)的形式
def test(arg,*args,**kwargs):
print(arg,args,kwargs)
test(1,2,3,a=1,b=2)
运行结果为:
1 (2, 3) {‘a’: 1, ‘b’: 2}
def test(arg,*args,**kwargs):
print(arg,args,kwargs)
test(1,a=1,b=2)
运行结果为:
1 () {‘a’: 1, ‘b’: 2}
当调用test函数时,设置参数为~~(1,a=2,b=3,4,5)~~ 时,程序会报错。表明不能更改位置,必须严格遵守语法!