Python 在源码函数中的*args和**kwargs

一、两个参数的含义

*args:任意个无名参数,类型为tuple或list(()元组和[]列表)

**kwargs:任意个关键字参数(key-word args,键值对),类型为dict({}字典)

*arg和**kwargs在函数定义优先级方面最低,其中*args参数优先于**kwargs参数。

发扬了参数传递的灵活性。

*参数和**参数在源码中的存在方式如下图matplotlib.pyplot.plot方法的源码:

二、*和**两者出现在函数定义中的作用——打包

在python中,当*和**符号出现在参数中时,表示任意个数的参数。

*arg表示任意多个无名参数,类型为tuple;稍后解释;

**kwargs表示关键字参数,为dict;稍后解释;

 

定义时需将*arg放在**kwargs之前,否则会出现错误提示 ” *parameter after ** parameter ”

使用时需将*arg放在**kwargs之前,否则会有“SyntaxError: positional argument follows keyword argument”的语法错误

 

三、*和**两者出现在函数调用中的作用——解包

 

在函数调用时,*parameter 会以单个元素的形式分解tuple,使其成为独立的参数。

在函数调用时,**parameter会以键/值对的形式分解成dict,使其成为独立的关键字参数(有索引)。

 

通过一个元祖给普通函数传递参数,并且分解成单个的元素

如果已经有一个dict,在参数前面加**,函数会把dict中所有键值对转换为关键字参数传进去,该例子中关键字参数是extract。

 

四、总结

 

定义中参数存在*和**parameter,其功能是打包(传入普参后转化成为tuple和dict类型)

调用的时候参数存在*parameter和**parameter,其功能是解包(将传入的tuple和dic变量转化成普参)

 

 

 

 

本文借鉴了 徐玖Python  https://www.cnblogs.com/xujiu/p/8352635.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值