python中*args以及**kwargs

首先理解args, 很多方法中都会存在args,那么首先理解一下,它是由* 以及 args组成的。
* 意思是打包或者拆分参数. args是约定俗成的名字,你起aaa, bbb, ccc ...都可以,只不过为了统一,叫做args。

来看以下代码:

def demo(*args):
  print(args)

demo(1, 2, 3, 4)
# 结果 (1, 2, 3, 4)

由此看出,*是将不限个数的参数打包为一个元组。那么继续看一下拆分功能。

def demo(a, b, c):
  print(a, b, c)

demo(*[1, 2, 3])
# 结果 1, 2, 3

就是这么简单,打包功能是定义函数时用到的,而拆分是调用函数时用到的。理解了args, 那么*kwargs就很容易理解了。
** 也是有打包以及拆分功能。依然看代码:

def demo(**kwargs):
  print(kwargs)

demo(a=1, b=2, c=3)

#结果 {'a': 1, 'b': 2, 'c': 3}

将参数打包起来,只不过将参数都打包成了字典。 拆分功能也是如此:

def demo(a, b, c):
  print(a, b, c)

demo(**{'a': 2, 'b': 3, 'c': 's'})

# 结果 2, 3, 's'

好了,现在大家能理解了吗?

你可能感兴趣的:(python中*args以及**kwargs)