python中的*args和**kwar

发布时间:2019-06-05 21:24:58编辑:auto阅读(2160)

    python支持可变参数:可以使用*args、**kwargs实现

    • *args是可变的positional arguments列表,是一个tuple。
    • **kwargs是可变的keyword arguments列表,是一个dict。
    • *args必须位于 **kwargs之前,因为positional arguments必须位于keyword arguments之前。

    *args、**kwargs的使用:

    • 函数定义:是一个将参数pack的过程
    • 函数调用:将参数unpack

    例子:

    def foo(*args, **kwargs):
        print("args:")
        print(args)
        print("kwargs:")
        print(kwargs)
    
    
    foo(1, 2, 3, 4)
    foo(a=1, b=2, c=3)
    foo("a", 1, None, a=1, b=2, c=3)

    运行结果:

    args:
    (1, 2, 3, 4)
    kwargs:
    {}
    args:
    ()
    kwargs:
    {'a': 1, 'b': 2, 'c': 3}
    args:
    ('a', 1, None)
    kwargs:
    {'a': 1, 'b': 2, 'c': 3}

关键字