*args

python中的*args和**kwargs

大兔子大兔子 提交于 2020-04-07 11:05:58
并非本人原创!!! 先来看个例子: <!-- lang: python --> def foo(*args, **kwargs): print('args = ', args) print('kwargs = ', kwargs) print('---------------------------------------') if __name__ == '__main__': foo(1,2,3,4) foo(a=1,b=2,c=3) foo(1,2,3,4, a=1,b=2,c=3) foo('a', 1, None, a=1, b='2', c=3) 输出结果如下: 可以看到,这两个是python中的可变参数。 args表示任何多个无名参数,它是一个tuple;**kwargs表示关键字参数,它是一个dict。并且同时使用 args和 kwargs时,必须*args参数列要在 kwargs前,像foo(a=1, b='2', c=3, a', 1, None, )这样调用的话,会提示语法错误“SyntaxError: non-keyword arg after keyword arg”。知道*args和**kwargs是什么了吧。 还有一个很漂亮的用法,就是创建字典: <!-- lang: python --> def kw_dict(**kwargs): return

理解 Python 中s可变参数的 *args 和 **kwargs

爷,独闯天下 提交于 2020-04-07 03:27:03
使用默认参数的可变参数 Python是支持可变参数的,最简单的方法莫过于使用默认参数,例如: def test_defargs(one, two = 2): print 'Required argument: ', one print 'Optional argument: ', two test_defargs(1) # result: # Required argument: 1 # Optional argument: 2 test_defargs(1, 3) # result: # Required argument: 1 # Optional argument: 3 在函数定义时使用*args和**kwargs 当然,本文主要讲一种达到可变参数 (Variable Argument) 的方法:使用*args和**kwargs语法。其中,*args是可变的positional arguments列表,**kwargs是可变的keyword arguments列表。并且,*args必须位于**kwargs之前,因为positional arguments必须位于keyword arguments之前。 首先介绍两者的基本用法。 下面一个例子使用*args,同时包含一个必须的参数: def test_args(first, *args): print 'Required