Python中函数参数匹配模型详解
当我们的函数接收参数为任意个,或者不能确定参数个数时,我们,可以利用 *来定义任意数目的参数,这个函数调用时,其所有不匹配的位置参数会被赋值为元组,我们可以在函数利用循环或索引进行使用
deff(*args):
#直接打印元组参数
print(args)
print('-'*20)
#循环打印元组参数
[print(i)foriinargs]
...
#传递一个参数
f(1)
print('='*20)
#传递5个参数
f(1,2,3,4,5)
示例结果:
(1,)
--------------------
1
====================
(1,2,3,4,5)
--------------------
1
2
3
4
5
###任意参数**而**是用于收集关键字参数并将这些参数传递给一个新的字典,即在函数中我们可以利用处理字典的方式处理这些参数
deff(**args):
#直接打印字典参数
print(args)
forkey,valueinargs.items():
print('{}:{}'.format(key,value))
f(a=1)
print('='*20)
f(a=1,b=2,c=3)
示例结果:
{'a':1}
a:1
====================
{'a':1,'b':2,'c':3}
a:1
b:2
c:3
任意参数混合
我们可以混合一般参数、 *参数以及 **参数完成实现更加复杂的调用方式。
deff(a,*targs,**dargs): print(a,targs,dargs) f(1,2,3,x=1,y=2)
示例结果:
1(2,3){'x':1,'y':2}
可以看到这种调用方式并不那么直观,甚至有些“混淆视听”,那么怎么在复杂任意参数的调用时,是的在函数调用更加直观明了?
解包参数
我们可以在函数调用时,直接利用*和**进行参数传递,然后让函数自动解包,也就类似之前的序列解包,使用调用时更加的直观。
deff(a,b,c,d):
print(a,b,c,d)
f(1,*(2,3),**{'d':4})
示例结果:
1234
总结
以上所述是小编给大家介绍的Python中函数参数匹配模型详解,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!