Python中*args、**kwargs到底是什么、有啥区别、怎么用

*args

打包参数(pack)

拆分参数(unpack)

**kwargs

打包参数(pack)

拆分参数(unpack)

  • 打包(pack):*args是把多个位置参数打包成元组,**kwargs是把多个关键字参数打包成字典。拆分(unpack):*args是把打包了的参数拆成单个的,依次赋值给函数的形参,**kwargs是把字典的键值拆成单个的,依次赋字典的值给函数的形参。

args,kwargs也可以自己定义名称,仅仅是一个约定俗成的写法,没有其他特殊含义,换成其他的也照用不误。

def bar(a, b, c):
    print(a,b,c)


bar(**{'a': 1, 'b': 2, 'c': 3})

执行结果:
1 2 3

#*args的用法:当传入的参数个数未知,且不需要知道参数名称时。用于指定函数传入参数的类型时。*用于参数前面,表示传入的多个参数将按照元组的形式存储,是一个元组;
**用于参数前则表示传入的(多个)参数将按照字典的形式存储,是一个字典。

args是元组属性
*args 用来将参数打包成tuple给函数体调用
def func_arg(farg, *args):
    print("formal arg:", farg)
    for arg in args:
        print("another arg:", arg)
func_arg(1,"youzan",'dba','四块五的妞')
print("-----------------------")
# 输出结果如下:
# formal arg: 1
# another arg: youzan
# another arg: dba
# another arg: 四块五的妞
# -----------------------


# **kwargs的用法:当传入的参数个数未知,但需要知道参数的名称时(立马想到了字典,即键值对)
 **kwargs 打包关键字参数成dict给函数体调用
kwargs是字典属性
def func_kwargs(farg, **kwargs):
    print("formal arg:", farg)
    for key in kwargs:
        print("keyword arg: %s: %s" % (key, kwargs[key]))
func_kwargs(1 ,id=1, name='youzan', city='hangzhou',age ='20',四块五的妞是 = '来日方长的')
print('--------------------')
# 输出结果如下:
# formal arg: 1
# keyword arg: id: 1
# keyword arg: name: youzan
# keyword arg: city: hangzhou
# keyword arg: age: 20
# keyword arg: 四块五的妞是: 来日方长的



#利用它转换参数为字典
def kw_dict(**kwargs):
    return kwargs
print(kw_dict(a=1,b=2,c=3))
# 输出结果如下:
# --------------------
# {'a': 1, 'b': 2, 'c': 3}

参考:https://lixiaoqian.blog.csdn.net/article/details/81288741?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.control

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值