*args,**kwargs都表示动态传入的参数,也就是说参数传入的个数是可变的,可以是一个或者多个,而在不需要的时候也可以不用给它传入任何值。*args是元组,**kwargs是字典。
注:动态参数必须放在所有的位置参数和默认参数最后面
def func(age=18,name,*args,**kwargs):#默认参数age,固定参数name,可变参数arg,kwargs
pass
*args 实质就是将函数传入的参数,存储在元组类型的变量args当中
比如定义函数,传入固定参数与可变参数 :
def fun_var_args(farg, *args):
print("farg is :",farg)
for value in args:
print("other arg:", value)
fun_var_args(8, "two","three","four")
打印
另一个例子
比如确定一个函数接收 message 信息参数和 values 值参数,但不确定 values 有几个值,解决方法可以把 values 定义成列表,有数据就塞入列表,无数据就空列表,得到如下函数代码:
def Mylog(message,values):
if not values:
print(message)
else:
value_str = ", ".join(str(x) for x in values)
print(f"{message}: {value_str}")
Mylog("My numbers are",[1,2])
Mylog("Hi",[])
打印
*代表可以接收任意个参数,调用时会将其打包为作为元组进行传入,如果是一个列表或者字典都可以作为一个参数进行传入
def fun(a,b,c):
print(a,b,c)
ls = [1,2]
fun(6,*ls)
#输出 6,1,2
**kargs 实质就是将函数的参数和值,存储在字典类型的kargs变量中
def fun_var_kargs(farg,**kargs):
print("firsr value is %s" % farg)
for key in kargs.keys():
print(key,kargs[key])
fun_var_kargs(1,var1="second",var2=35,var3="third")
打印
直接获取键值
def fun_input_dic(var1,var2,var3):
print(var1,var2,var3)
dic_input={"var2":2,"var3":"third"}
fun_input_dic(6,**dic_input)
打印
参考:
python中args用法_Python中*args和**kargs如何使用_weixin_39940688的博客-CSDN博客
Python *args 用法笔记_TEDxPY的博客-CSDN博客_python中args的用法