Python 动态参数 *args 和 **kwargs

动态参数

动态参数,表示没有明确定义参数数量,允许传递任意多个参数的函数。

*args 和 **kwargs

可以通过*args**kwargs进行加参数的访问。

注意,其中argskwargs 只是名称, 重点在 * 。故: *a *b **kwa **bbb等等的名字都是可以的。

*args

加了星号*的变量名会存放所有未命名的变量参数, 将他们存为元组。前面可以使用明确的参数,*args只能放置在最后一个参数。

def manyargs(val,*args):
    print("val : ", val)
    print(type(args))
    print("共有参数数量: " , len(args))
    for v in args:
        print(v)
    print(args[2]) # > 3


if __name__ == "__main__":
    manyargs(1,2,3,4)

val : 1


共有参数数量: 3
2
3
4
4

上面的例子中,1,2,3,4四个参数,其中1传递给val,剩余的3个参数都加入到了args中。

**kwargs

**kwarg 将所有传递过来的命名参数保存成为一个字典,同样前面也可以加入其它参数。

def namedargs(one , **kwargs):
    print("one=",one)
    print("共有参数数量: " , len(kwargs))
    print(kwargs) # 输出参数字典
    print(type(kwargs))

if __name__ == "__main__":
    namedargs(one=1,two=2,three=3)
    # 注意,参数必须都是带有key的。

one= 1
共有参数数量: 2
{'two': 2, 'three': 3}

kwargs使用字典的方式将所有命名参数保存起来。

你可能感兴趣的:(Python 动态参数 *args 和 **kwargs)