*args 和 **kwargs
首先并不是必须写成*args 和**kwargs。 只有变量前面的 *(星号)才是必须的,不过更建议使用这两个名字,可以让别的程序员更容易理解。
*args
*args
是用来发送一个非键值对的可变数量的参数列表给一个函数。
def var_args(f_arg, *args):
print("first arg:", f_arg)
for arg in args:
print("another arg in *argv:", arg)
var_args('first', 'second', 'third', 'fourth')
程序的输出结果为
first arg: first
another arg in *argv: second
another arg in *argv: third
another arg in *argv: fourth
我们还可以这样传递参数,结果就跟上面的写法一模一样,似乎*的作用跟C语言中的解引用有着共通之处。
arg_list = ['second', 'third', 'fourth']
var_args('first', *arg_list)
**kwargs
**kwargs
是用来将不定长度的键值对,作为参数传递给一个函数。
def var_kwargs(**kwargs):
for key, value in kwargs.items():
print("{0} : {1}".format(key, value))
var_kwargs(name="lechrond", age=18)
输出结果为
name : lechrond
age : 18