python 方法中的参数 *args 与 **kwargs

*args

*args 传入多个非键值对的参数列表

**kwargs

**kwargs 传入多个键值对的参数字典

*args和**kwargs的传递

当需要往其他方法传递 *args 和 ** kwargs 时

需要使用 * 和 ** 进行拆包

代码示例

def test1(hours, minutes, *args, **kwargs):
    print('!!! test1 start !!!')
    print(hours, minutes)
    print(args)
    print(kwargs)
    print('!!! test1 end !!!')


def test2(hours, minutes, *args, **kwargs):
    print('!!! test2 start !!!')
    print(hours, minutes)
    print(args)
    print(kwargs)
    test1(hours, minutes, args, kwargs)  # 不带 * 是 args 列表传入 kwargs 字典传入
    test1(hours, minutes, *args, **kwargs)  # 带 * 是 args 和 kwargs 拆开传入
    print('!!! test2 end !!!')


if __name__ == '__main__':
    test2(14, 13, 2021, 5, 20, country='China', province='Hubei', city='Wuhan')
!!! test2 start !!!
14 13
(2021, 5, 20)
{'country': 'China', 'province': 'Hubei', 'city': 'Wuhan'}
!!! test1 start !!!
14 13
((2021, 5, 20), {'country': 'China', 'province': 'Hubei', 'city': 'Wuhan'})
{}
!!! test1 end !!!
!!! test1 start !!!
14 13
(2021, 5, 20)
{'country': 'China', 'province': 'Hubei', 'city': 'Wuhan'}
!!! test1 end !!!
!!! test2 end !!!
posted @ 2021-11-12 15:11  消愁丶先生  阅读(139)  评论(0)    收藏  举报