*args*args可以给函数传递可变数量的参数,用于传递非关键字、可变参数的参数列表。exam1:*a会自动解析a,将a中的3个元素依次赋值给b、c、d。defadd1(a,b,c,d):returna+b+c+da=range(3)#out:add1result:8print('add1result:',add1(5,*a))exam2:如required实现一个可以接受任意数量输入的求和函数,并将函数的参数设置为*args。defadd2(*args):returnsum(args)#out:add2result:6print('add2result:',add2(*a))**kwargs**kwargs用于传递带关键字的可变长度参数List,比如我们常用的绘图函数plt.plot函数就是一个可以接受带关键字的变长参数的函数。importmatplotlib.pyplotaspltimportnumpyasnpdict_fig={'color':'black','marker':'*','markersize':10,'linewidth':1,'linestyle':'--','markerfacecolor':'red'}x=np.linspace(-5,5,50)y=np.sin(x)#matplotlib.pyplot.plot(*args,scalex=True,scaley=True,data=None,**kwargs)#可以直接传入一个字典参数plt.plot(x,y,**dict_fig)plt.show()另外对于带关键字参数的函数,可以使用**kwargs传参defparse_dict(**kwargs):对于k,vinkwargs.items():print(k,v)defaccept_kwargs(color='black',marker='*',markersize=10,linewidth=1,linestyle='--',markerfacecolor='red',P=True):print(color)#parse_dict(**dict_fig)accept_kwargs(**dict_fig)总结*args和**kwargs是Python函数中很常见的用法,尤其是当函数有参数很多,两者的使用可以使函数的形式更加简洁。在许多情况下,*args和**kwargs可以一起使用。需要注意的是,虽然*args和**kwargs可以让代码更加简洁,但是它们会隐藏很多细节。如果在函数中使用,最好写详细的注释。
