首先理解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'
好了,现在大家能理解了吗?