详见 https://blog.csdn.net/weixin_43473435/article/details/83419290
def getValue(position1, default1 = "默认", *args, keyName1, **kwargs): pass
中,调用函数
getValue(
position1 = "matchPostion1",
default1 = "matchDefault1",
keyName1 = "matchKeyName1",
kwargs1 = "matchKwargs1")
时
位置参数………………position1 = “matchPostion1”、
默认参数………………default1 = “matchDefault1”、
关键字参数……………keyName1 = “matchKeyName1”、
可变关键字参数………kwargs1 = “matchKwargs1”
都可以通过形参变量名赋值的方式传递,只有keyName1一个是关键参数
所以,在函数声明的时候,只有在 args 后面的参数才为关键字参数
(没有args,就没有关键字参数)
函数声明中,可变参数(*args)后的参数
(1)当函数调用存在可变参数时,函数(位置参数,默认参数=“默认”,可变参数)
def getValue(position1, default1 = "默认", *args): pass
必须先给所有的位置参数和默认值参数赋值,才能给可变参数 *args开始赋值。
(2)但是,当函数调用存在可变参数时,函数(位置参数,可变参数,关键字参数=“默认关键字参数”)
def getValue(position1, *args, keyName1 = "默认关键字参数"): pass
只需要先给所有的位置参数,跳过不存在的默认参数,才能给可变参数 *args开始赋值。