Python是支持可变参数的,最简单的方法莫过于使用默认参数,例如:
1 | def test_defargs(one, two = 2): |
当然,本文章的主题并不是讲默认参数,而是另外一种达到可变参数 (Variable Argument) 的方法:使用*args
和**kwargs
语法。其中,*args
是可变的positional arguments列表,**kwargs
是可变的keyword arguments列表。并且,*args
必须位于**kwargs
之前,因为positional arguments必须位于keyword arguments之前。
首先介绍两者的基本用法。
下面一个例子使用*args,同时包含一个必须的参数:
1 | def test_args(first, *args): |
下面一个例子使用*kwargs
, 同时包含一个必须的参数和*args
列表:
1 | def test_kwargs(first, *args, **kwargs): |
*args
和**kwargs
语法不仅可以在函数定义中使用,同样可以在函数调用的时候使用。不同的是,如果说在函数定义的位置使用*args
和**kwargs
是一个将参数pack的过程,那么在函数调用的时候就是一个将参数unpack的过程了。下面使用一个例子来加深理解:
1 | def test_args(first, second, third, fourth, fifth): |
使用*args
和**kwargs
可以非常方便的定义函数,同时可以加强扩展性,以便日后的代码维护。
参考资料: