python **kwarg和*args

Posted li修远

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 的区别

以上是关于python **kwarg和*args的主要内容,如果未能解决你的问题,请参考以下文章

Python中的*args和**kwargs

python的*args和**kwargs基础用法

Python高级语法-多继承MRO相关-args和kwargs(4.5.2)

Python代码中func(*args, **kwargs)是啥意思

Python的*args与**kwargs

python中*args和**kwargs的使用