Python——参数*args与**kwargs的意义***

Python中常常使用\args与**kwargs这样的参数形式定义函数的参数,他们表示该函数可以接受任何类型任何数量的参数*


一句话解释

  • *args是非关键字参数,用于元
  • **kwargs是关键字参数,用于字典

测试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
def test(*args, **kwargs):
print "args: ", args
print "kwargs: ", kwargs

test(1,2,3)
test(a=1, b=2)
test(1, a=2, c=2)
# output
args: (1, 2, 3)
kwargs: {}
args: ()
kwargs: {'a': 1, 'b': 2}
args: (1,)
kwargs: {'a': 2, 'c': 2}
  • 注意: 关键字参数后面不能有非关键字参数

    1
    test(1, a=1, 2)
    • 上面的函数调用会造成语法错误

总结

  • *args表示任何多个无名参数,它是一个tuple;
  • **kwargs表示关键字参数,它是一个dict
  • 同时使用*args和**kwargs时,必须*args参数列要在**kwargs前
    • 否则提示语法错误“SyntaxError: non-keyword arg after keyword arg”