Python 高级编程和异步IO并发编程 --08_5 *arge 与 **kwargs的区别

Olinda ·
更新时间:2024-11-13
· 795 次阅读

*arge 接收的数据类型为tuple

**kwargs接收的数据类型为dict

当对象实例化时,如果有参数传入,则会传入**kwargs,如下面,user = User(name="bobby"), 调试中发现,args的tuple的值为0,无值传入。 而kwargs的值有传入{'name':'bobby'},即参数被传入了kwargs的dict中

当对象实例化时,如果无参数传入,则会传入*args,如下面,user = User("bobby"), 调试中发现,kwargs的dict为空,无值传入。即参数被传入了args的tuple中

一、*args的使用方法

      *args 用来将参数打包成tuple给函数体调用

二、**kwargs的使用方法

      **kwargs 打包关键字参数成dict给函数体调用

注意:参数arg、*args、**kwargs三个参数的位置必须是一定的。必须是(arg,*args,**kwargs)这个顺序,否则程序会报错。

 

如果我们不确定要往函数中传入多少个参数,或者我们想往函数中以列表和元组的形式传参数时,那就使要用*args;

如果我们不知道要往函数中传入多少个关键词参数,或者想传入字典的值作为关键词参数时,那就要使用**kwargs。

args和kwargs这两个标识符是约定俗成的用法,你当然还可以用*bob和**billy,但是这样就并不太妥。

下面是具体的示例:

 

为什么提这个问题?

有时候,我们需要往函数中传入未知个数的参数或关键词参数。有时候,我们也希望把参数或关键词参数储存起来,以备以后使用。有时候,仅仅是为了节省时间。

*args 和 **kwargs 都代表 1个 或 多个 参数的意思。*args 传入tuple 类型的无名参数,而 **kwargs 传入的参数是 dict 类型。


作者:世界非世界,是名世界!



io 异步io Python

需要 登录 后方可回复, 如果你还没有账号请 注册新账号