设为首页 加入收藏

TOP

谈Python函数的参数处理
2014-11-24 07:15:01 来源: 作者: 【 】 浏览:0
Tags:Python 函数 参数 处理

以下几种函数定义
def funcion(a,b):
print a,b


function(1,2)


def function1(*a):
print a <=打印元组


function1(1,2,3)


def function2(**a):
print a <=打印字典


function2(name='zzj',age=30)


def function3(*a,**b):
print a,b <=打印元组+字典


function3(1,2,3,name='zzj',age=30)


调用,需要人为的构造实参.如果我们有现成的元组和字典,想作为实参应该怎么办


如我们经过一系列的动作得知了一个元组aTuple,想将其作为实参,


难道function1(aTuple)
返回是一个((aTuple),)将其aTuple作为一个元组元素,不是我们想要的,我们想要的是将aTuple元组元素作为*a的元素,所以,我们这里需要调用apply函数来处理这样的事情
apply(function1,aTuple)


code
>>> aTuple=(1,2,3,4)
>>> function1(aTuple)
((1, 2, 3),)
>>> apply(function1,aTuple)
(1, 2, 3, 4)


同样的道理我们的实参是一个字典aDict呢 如果以function2(aDict),呵呵,不能以aDict作为实参,那么可以用apply来实现吗 可以,请看如下code演示,所以后期如果你的参数是以元组或者字典组成或者参数,元组,字典三者混合,那么不需要考略如何将其转换成原始调用模式,可以考略下使用apply功能来完成.


code
>>> aDict
{'age': 30, 'name': 'zzj'}
>>> function2(name='zzj',age=30)
{'age': 30, 'name': 'zzj'}
>>> function2(aDict)
Traceback (most recent call last):
File "", line 1, in
TypeError: function2() takes exactly 0 arguments (1 given)


>>> apply(function2,(),aDict)
{'age': 30, 'name': 'zzj'}


最后展示下用apply函数来处理参数,元组,字典三者混合的案例


code
>>> def function4(a,b,c,*d,**e):
... print a,b,c,d,e
...
>>> arg1=1
>>> arg2=2
>>> arg3=3
>>> aTuple=(4,5,6)
>>> aDict={'name':'zzj','age':30}
>>> apply(function4,(arg1,arg2,arg3,aTuple),aDict)
1 2 3 ((4, 5, 6),) {'age': 30, 'name': 'zzj'}
>>>
注意,实参与形参的顺序,一定要对应上,否则就不是你想要的值了.


通过以上实例相信大家对python中函数定义的参数有一定的玩法了(包括可变参数的概念*a,**b),并且提供apply函数来实现更加灵活的调用.


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Android ProgressBar(进度条)的使.. 下一篇Android 实现GridView多选效果【..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·MySQL 安装及连接-腾 (2025-12-25 06:20:28)
·MySQL的下载、安装、 (2025-12-25 06:20:26)
·MySQL 中文网:探索 (2025-12-25 06:20:23)
·Shell脚本:Linux Sh (2025-12-25 05:50:11)
·VMware虚拟机安装Lin (2025-12-25 05:50:08)