下面我来总结一下它们的作用,它们主要是经常出现在函数定义的函数里面。它们用来接收实际参数的未知变量。简单点来说就是,*args里面存放的是元组, **kwargs里面存放的是字典。
1、*args的用法
def func(age,*args):
print("age is {}".format(age))
#查看args的数据类型
print(type(args))
for i in args:
print(i,end = ' ')
func(18,'I','love','you')
代码输出如下:
age is 18
<class 'tuple'>
I love you
2、**kwargs
**kwargs允许键值对作为函数的参数,可以在函数里面处理键值对。
下面,来举个例子说明:
def func(**kwargs):
for key,value in kwargs.items():
print(f'My {key} is {value}')
func(name = 'Tom')
代码输出如下:
My name is Tom
3、使用*args给其他函数传递参数
举个例子:
#定义其他函数
def func(arg1,arg2,arg3,arg4):
print(arg1)
print(arg2)
print(arg3)
print(arg4)
#赋值元组
args = ('桂林米粉','螺蛳粉','老友粉','肠粉')
func(*args)
代码输出如下:
桂林米粉
螺蛳粉
老友粉
肠粉
4、使用**kwargs给其他函数传递参数
#定义其他函数
def func(arg1,arg2,arg3,arg4):
print(arg1)
print(arg2)
print(arg3)
print(arg4)
#构造字典,键是函数的参数名
kwargs = {'arg1':'非常好吃','arg2':'就是好吃','arg3':'好吃','arg4':'吃吧'}
func(**kwargs)
代码输出如下:
非常好吃
就是好吃
好吃
吃吧
最后要说的一点是,它们里面的args,kwargs可以改变,关键区分点还是在于它前面是一个 *,还是两个 *。
如果在在一个函数里面同时使用的话,注意它们的位置关系:*args在前, **kwargs在后。









网友评论