可变参数与可变关键字
args用于函数定义,表示可以将*不定数量的参数传递给一个函数。
args发送⼀个*非键值对的可变数量的参数列表给⼀个函数。
举个栗子:
def test_var_args(f_arg, *argv):
print("first normal arg:", f_arg)
for arg in argv:
print("another arg through *argv:", arg) # 有几个就输出几个
test_var_args('yasoob', 'python', 'eggs', 'test')
输出的结果为:
first normal arg: yasoob
another arg through *argv: python
another arg through *argv: eggs
another arg through *argv: test
kwargs 允许将不定长度的键值对**作为参数传递给⼀个函数。
如果想要在⼀个函数里处理带名字的参数, 应该使用kwargs。
kwargs和arg的区别在于,*kargs必须接受类似arg=val类型的键值对
举两个栗子:
def greet_me(**kwargs):
# 不定的键值对,以dictionary的形式接收数据对象
for key, value in kwargs.items():
print("{0} == {1}".format(key, value))
>>> greet_me(name="yasoob")
name == yasoob
def foo(**kwargs): # 以dictionary的形式接收数据对象
print(kwargs)
>>> foo(a=1, b=2, c=3) # 用键值对写
{'a': 1, 'c': 3, 'b': 2}
那么如果想在函数里同时使用这三种参数, 顺序是这样的:
some_func(fargs, *args, **kwargs) # 先是定下来的,然后是可变参数,最后是可变关键字