位置参数vs关键字参数
- *args 传入tuple 类型的无名参数,而 **kwargs 传入的参数是 dict 类型。
- 不能将**kwargs置于*args前,否则将产生错误。
演示1:*args的使用
list1 = [1,2,3,4]
list2 = [4,5,6]
def test (*args):
print(args)
for o in args:
print(o)
test(list1, list2)
# 输出
# ([1, 2, 3, 4], [4, 5, 6])
# [1, 2, 3, 4]
# [4, 5, 6]
演示2:**kwargs的使用
def test2 (**kwargs):
print(kwargs)
print(kwargs.keys())
print(kwargs.values())
test2(a = list1, b = list2)
# 输出
# {\'b\': [4, 5, 6], \'a\': [1, 2, 3, 4]}
# dict_keys([\'b\', \'a\'])
# dict_values([[4, 5, 6], [1, 2, 3, 4]])
演示args和**kwargs同时使用,不能将
**kwargs置于args前。
def test3 (**kwargs, *args):
print(args)
print(kwargs)
test3(a=list1, b=list2, list1, list2)
# 输出
# def test3 (**kwargs, *args):
# ^
# SyntaxError: invalid syntax
def test4 (*args, **kwargs):
print(args)
print(kwargs)
test4(list1, list2, a=list1, b=list2)
# 输出
# ([1, 2, 3, 4], [4, 5, 6])
# {\'b\': [4, 5, 6], \'a\': [1, 2, 3, 4]}
参考文献
[1] Python中的*args和**kwargs是什么?该如何使用?
[2] python 中 *args 和 **kwargs 的区别