source
作者:耀凯考前突击大师
链接:https://www.jianshu.com/p/be92113116c8
*
和**
实际上真正的Python参数传递语法是*
和**
。*args
和**kwargs
只是一种约定俗成的编程实践。我们也可以写成*vars
和**kvars
。
*args
和**kwargs
一般是用在函数定义的时候。二者的意义是允许定义的函数接受任意数目的参数。
也就是说我们 在函数被调用前 并不知道也不限制将来函数可以接收的参数数量。在这种情况下我们可以使用*args
和**kwargs
。
*args
的使用
*args
用来表示函数接收可变长度的非关键字参数列表作为函数的输入。(用来发送一个非键值对的可变数量的参数列表给一个函数。)
def test_args(normal_arg, *args):
print("first normal arg:" + normal_arg)
for arg in args:
print("another arg through *args :" + arg)
test_args("normal", "python", "java", "C#")
first normal arg: normal
another arg through *args : python
another arg through *args : java
another arg through *args :C#
**kwargs
的使用
允许你将不定长度的键值对, 作为参数传递给一个函数。 如果你想要在一个函数里处理带名字的参数, 你应该使用**kwargs。
def test_kwargs(**kwargs):
if kwargs is not None:
for key, value in kwargs.iteritems():
print("{} = {}".format(key,value))
# Or you can visit kwargs like a dict() object
# for key in kwargs:
# print("{} = {}".format(key, kwargs[key]))
test_kwargs(name="python", value="5")
name = python
value = 5
使用*args
和**kwargs
来调用函数
接收普通输入参数的函数, 可以用 *args
和**kwargs
来 直接调用这个函数。