*args 表示的是arguments ,**kwargs 表示的是keyword arguments ,他们两个叫做python中的可变参数。
注意:args 和kwargs 可以随便修改,重点在于* 和** ,所以上述说法也可表述为* 表示的是arguments ,** 表示的是keyword arguments 。
他们两个之间的区别及使用场景为:
1. *args
在当传入的参数个数未知,且不需要知道参数名称时使用。
代码为:
def test(one, *args):
print("first element is %s" %one)
print("in args:",type(args))
for i in args:
print("%s" %i)
输出为:
>>>test(1,2,3,4,5)
first element is 1
in args: <class 'tuple'>
2
3
4
5
- 第一个参数
one 是必须传入的形参,而后面的四个参数作为可变参数传入到了函数中,并赋值为*args 。 *args 返回一个对象,这个对象是一个元组。
2. **kwargs
当传入的参数个数未知,但需要知道参数的名称时使用。
代码为:
def test_kw(one, *args, **kwargs):
print("first element is %s" %one)
print("in kwargs:",type(kwargs))
for k,v in kwargs.items():
print("%s:%s" %(k,v))
输出为:
>>>test(1,2,3,k1=4,k2=5)
first element is 1
in args: <class 'dict'>
k1:4
k2:5
- 第一个参数
one 是必须传入的形参,2 和3 被作为可变参数传入到了函数中,并赋值为*args ,4 和5 作为位置参数传递给了k1 和k2 。 **kwargs 返回一个对象,这个对象是一个字典。
|