经常我们会在python代码中运到*args 和 **kwargs 这两个魔法变量。其实并不是必须写成 *args 和 **kwargs 。只有变量前面的 (星号)才是必须的。
*args 和 **kwargs 主要用于函数定义。 你可以将不定数量的参数传递给一个函数。
*args 的用法
*args 是用来发送一个非键值对的可变数量的参数列表给一个函数。
用个例子说明,就会清晰许多啦
def fun(a, *argv):
print(a)
print(argv)
fun('a', 'b', 'c', 'd')
a
('b', 'c', 'd')
**kwargs 的用法
**kwargs 允许你将不定长度的键值对,作为参数传递给一个函数。如果你想要在一个函数里处理带名字的参数,你应该使用**kwargs 。
同样用例子说明
def fun(**kwargs):
print(kwargs)
for k,v in kwargs.items():
print(k,"---",v)
fun(a='a', b='b', c='c', d='d')
{'a': 'a', 'b': 'b', 'c': 'c', 'd': 'd'}
a --- a
b --- b
c --- c
d --- d
联合使用args和*kwargs
我们将使用 *args 和 **kwargs 来调用一个函数看看结果
定义函数
def fun(a,b,c):
print(a)
print(b)
print(c)
return 1
q=('a',1,2)
fun(*q)
print("====")
p={'a':'a', 'b':'b', 'c':'c'}
fun(**p)
输出结果
a
1
2
====
a
b
c
参考资料
https://eastlakeside.gitbook.io/interpy-zh/args_kwargs/usage_args
|