*args和**kwargs

2020-02-27  本文已影响0人  追光的焕焕

下面我来总结一下它们的作用,它们主要是经常出现在函数定义的函数里面。它们用来接收实际参数的未知变量。简单点来说就是,*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在后。

上一篇 下一篇

猜你喜欢

热点阅读