Python参数传递中的 args, kwargs
概念
真正的Python参数传递语法是*
和**
,其被称为 被称为打包和解包参数。*args
和**kwargs
只是大家默认的一种形式。也可以写成*keys
和**kkeys
等其他形式。二者都是为了在不知道函数可以接收的参数的数量时,定义函数可以接收任意数目的参数。
打包参数
所谓的打包参数,就是指 该参数用作函数的形参,等函数被调用被传入不固定数目的实参时,实参被打包被传入函数。
-
*args
表示函数接收可变长度的非关键字参数列表作为函数的输入
exp:
def func(a,*args):
for arg in args:
print(a,arg)
func(1,2,3,4)
>> 1,2
1,3
1,4
-
**kwargs
表示函数接收可变长度的关键字参数字典作为函数的输入
exp:
def func(**kwargs):
for key, value in kwargs.iteritems():
print("{} = {}".format(key,value))
func(name="he", value="5")
>> name = he
value = 5
解包参数
所谓解包参数,就是在函数调用时,将需要传入的参数集合,通过解包参数 解包成和函数的各个形参相对应,并传入到函数中。
-
*args
在函数调用时, * 能将list或元组解包成不同的参数
exp:
def func(a,b,c,d): print(a,b,c,d) args = (1,2,3,4) func(*args) >> 1 2 3 4 args = [1,2,3,4] func(*args) >> 1 2 3 4
-
**kwargs
在函数调用中,**会将已经打包好的字典,解包成独立的key-value对,并将解包后的参数传给函数形参
def func(a,b,c,d): print(a,b,c,d) kwargs = {"a":1,"b":2,"c":3,"d":4} func(**kwargs) >> 1 2 3 4
额外知识-关键词参数
指在传参时指明形参的名称,并为其赋以实参的值。
exp:
def func(a,b):
return a+b
func(a=1,b=2) # 关键词参数
本文作者:jacknie23
本文链接:https://www.cnblogs.com/jack-nie-23/p/16377197.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步