python进阶(一):*args和**kwargs用法
引出:
在pycharm中对某个函数按快捷键crtl+P时可以查询到传入的参数列表,这里plt.plot绘图函数第一个参数就是*args,最后一个参数就是**kwargs。
在python中定义一个函数时,传入的变量数如果不确定的时候我们就要用到这两个参数,比如上面的绘图函数,因为传入的x,y值数量每次都不确定,所以定义这个来接收不同长度的变量。
看看英文全称,方便理解:
args 是 arguments 的缩写,表示位置参数;kwargs 是 keyword arguments 的缩写,表示关键字参数。
区别
*args和**kwargs区别在于,前者将所有的变量放入到args这个列表中,后者将所有的变量放入到kwargs这个字典中,所以kwargs需要形参传入键对值.
注意事项
两个参数一起出现时,*args一定要出现在**kwargs前面
def function(a,*args,**kwargs):
实例
#*args用法实例
def test_var_args(f_arg, *args):
print("first normal arg:", f_arg)
for arg in args:
print("another arg through *args:", arg)
#这里'yasoob'传给了f_arg参数,'python', 'eggs', 'test'三个值被传入到args这个列表里面
test_var_args('yasoob', 'python', 'eggs', 'test')
#这会产⽣如下输出:
first normal arg: yasoob
another arg through *args: python
another arg through *args: eggs
another arg through *args: test
def greet_me(**kwargs):
for key, value in kwargs.items():
print("{0} == {1}".format(key, value))
#将键对值name="yasoob"传入到kwargs这个字典中去
>>> greet_me(name="yasoob")
name == yasoob