python *args 和 **kwargs 的区别

文章目录

  • 1 概述
  • 2 测试代码
    • 2.1 *args
    • 2.2 **kwargs

1 概述

1. 咱经常可以在参数定义中看到 *args 和 **kwargs,具体有啥区别呢?
   如:logging 中的 def debug(msg, *args, **kwargs):
 
2. 区别
   相同点: 都代表 1 个 或 多个参数
   不同点: *args   : 传入 tuple 类型的参数  # 元组
          **kwargs: 传入 dict  类型的参数  # 字典

2 测试代码

2.1 *args

def test_args(*args):
    print(f'args: {args}')

    for i in args:
        print(i)


test_args(1, 2, 3)

输出结果:

args: (1, 2, 3)
1
2
3

2.2 **kwargs

def test_kwargs(**kwargs):
    print(f'kwargs: {kwargs}')

    keys = kwargs.keys()
    values = kwargs.values()
    print(keys)
    print(values)


test_kwargs(a=1, b=2, c=3)

输出结果:

kwargs: {
     'a': 1, 'b': 2, 'c': 3}
dict_keys(['a', 'b', 'c'])
dict_values([1, 2, 3])

你可能感兴趣的:(Python,python)