对这个函数的调用addOn() addOn(2) addOn(3,4,5,6)等等都是可以的 。
与第3种方式类似,形参名前面加了两个*表示,参数在函数内部将被存放在以形式名为标识符的dictionary中 。这时候调用函数必须采用key1=value1、key2=value2...的形式 。比如:
1. def addOn(**arg):
2. sum = 0
3. if len(arg) == 0: return 0
4. else:
5. for x in arg.itervalues():
6. sum += x
7. return sum
那么对这个函数的调用可以用addOn()或诸如addOn(x=4,y=5,k=6)等的方式调用 。
上面说了四种函数形式定义的方式以及他们的调用方式,是分开说的,其实这四种方式可以组合在一起形成复杂多样的形参定义形式 。在定义或调用这种函数时,要遵循以下规则:
1. arg=value必须在arg后
2. *arg必须在arg=value后
3. **arg必须在*arg后
在函数调用过程中,形参赋值的过程是这样的:
首先按顺序把“arg”这种形式的实参给对应的形参
第二,把“arg=value”这种形式的实参赋值给形式
第三,把多出来的“arg”这种形式的实参组成一个tuple给带一个星号的形参
第四 , 把多出来的“key=value”这种形式的实参转为一个dictionary给带两个星号的形参 。
例子:
1. def test(x,y=5,*a,**b):
2. print x,y,a,b
就这么一个简单函数,来看看下面对这个函数调用会产生什么结果:
test(1) === 1 5 () {}
【python函数参数传递 Python函数参数传递机制超级详细】test(1,2) === 1 2 () {}
test(1,2,3) === 1 2 (3,) {}
test(1,2,3,4) === 1 2 (3,4)
test(x=1) === 1 5 () {}
test(x=1,y=1) === 1 1 () {}
test(x=1,y=1,a=1) === 1 1 () {'a':1}
test(x=1,y=1,a=1,b=1) === 1 1 () {'a':1,'b':1}
test(1,y=1) === 1 1 () {}
test(1,2,y=1) === 出错 , 说y给赋了多个值
test(1,2,3,4,a=1) === 1 2 (3,4) {'a':1}
test(1,2,3,4,k=1,t=2,o=3) === 1 2 (3,4) {'k':1,'t':2,'o':3}
python如何将可选参数或关键字参数从一个函数传递到另一个函数?使用函数参数列表中的*和**说明符收集参数;这会将位置参数作为元组,将关键字参数作为字典 。然后,您可以使用*和**调用另一个函数时传递这些参数:
def f(x, *args, **kwargs):
...
kwargs['width'] = '14.3c'
...
g(x, *args, **kwargs)
python函数参数传递的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于Python函数参数传递机制超级详细、python函数参数传递的信息别忘了在本站进行查找喔 。
推荐阅读
- 单机益智游戏电脑版,单机益智游戏排行榜前十名
- js实现件数加减的问题,js 加减法
- 用ue4开发游戏使用费,ue4开发的游戏
- 斗鱼直播直播游戏黑屏,斗鱼直播游戏黑屏怎么办
- java代码生成实体类 java代码生成uml类图
- 数据导入到hbase的api有哪些,hbase导入数据方法
- 角色扮演超市钱币游戏攻略,幼儿角色扮演超市游戏
- 新郑运营网站搭建咨询热线,新郑客服
- linux找文件的命令 linux找文件夹命令