python里面的*args和**kwargs

2025-11-20 22:26:51

1、*args和**kwargs代表的是变量, 变量前面的 *(星号)才是必须的. 也可以写成*v和**vs;写成*args 和**kwargs只是一个常用的书写方式。首先看看*args;

一个星号*的作用是将非键值对的(tuple,list)元素进行unpack,得到的是一个例元组如:

def myargs(x,*args):    print(x)    print(args)myargs(1,2,2)

输出:

1

(2, 2)

python里面的*args和**kwargs

2、然后我们看看 **kwargs,**kwargs传入的必须是键值对

def mykwargs(x,**kwargs):    print(x)    print(kwargs)mykwargs(2,3)

如上 如果我们这样传入的话会报错,

 File "C:/Users/king/PycharmProjects/sellmall/seo/mytest.py", line 11, in <module>

    mykwargs(2,3)

TypeError: mykwargs() takes exactly 1 argument (2 given)

因为**kwargs传入的必须是键值对

def mykwargs(x,**kwargs):    print(x)    print(kwargs)mykwargs(2,tr=3)

输出:

2

{'tr': 3}

python里面的*args和**kwargs

python里面的*args和**kwargs

3、接下来我们把*args 和**kwargs一起使用来看看传入参数

def mya(x,y,*args,**kwargs):    print(x)    print(args)    print(kwargs)mya(1,2,d=22,3)

如上这样传入也会报错,当遇到键值时候,后面的参数将被视为全是键值对的,这里args则传入空值;

def mya(x,y,*args,**kwargs):    print(x)    print(args)    print(kwargs)mya(1,2,d=22,z=11)

如上输出:

1

()传入空值

{'z': 11, 'd': 22}

下面我们都传入

def mya(x,y,*args,**kwargs):    print(x)

   print(y)

   print(args)    print(kwargs)mya(1,2,8,9,0,d=22,z=11)

输出:

1

2

(8, 9, 0)

{'z': 11, 'd': 22}

python里面的*args和**kwargs

python里面的*args和**kwargs

4、*args和**kwargs虽然都是变量,但是少一个*区别还是比较大的,在传入参数时候,我们一定要注意数据类型。如果是字典类型的只能用**kwargs

python里面的*args和**kwargs

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢