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中函数参数匹配模型详解,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!