python **kwarg和*args

位置参数vs关键字参数

  1. *args 传入tuple 类型的无名参数,而 **kwargs 传入的参数是 dict 类型。
  2. 不能将**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 的区别

猜你喜欢

转载自www.cnblogs.com/lixyuan/p/12817262.html