python闭包学习笔记四

来源:互联网 发布:知床热气球 编辑:程序博客网 时间:2024/06/03 01:30
#coding:utf-8'''闭包作用:封装、代码复用.>>>>>>>闭包存放函数的方式'''#def my_sum(*arg):#    if len(arg) == 0:#        return 0#    for val in arg:#        if not isinstance(val, int):#            return 0#    return sum(arg)##def my_average(*arg):#        if len(arg) == 0:#            return 0#        for val in arg:#            if not isinstance(val, int):#                return 0#        return sum(arg) / len(arg)##print my_sum(1, 2, 3, 4, 5)#print my_average(1, 2, 3, 4, 5)#print my_sum('22')#print my_average(1, 2, 3, 4, 5, '33')def my_sum(*arg):    print "in_my_sum=",arg    return sum(arg)def my_average(*arg):        print "my_average=",arg        return sum(arg) / len(arg)#在该函数中返回了in_dec,而在in_dec中又引用了func,所以func被放入in_dec的属性中def dec(func):    def in_dec(*arg): ## func函数会被放入in_dec的属性中引用了func        print "in_dec arg=",arg        if len(arg) == 0:            return 0        for val in arg:            if not isinstance(val, int):                return 0        return func(*arg)    return in_dec'''my_sum == in_dec(*arg)'''my_sum = dec(my_sum)my_average = dec(my_average)'''先执行in_dec,再执行func'''print my_sum(1, 2, 3, 4, 5)print my_average(1, 2, 3, 4, 5)print my_sum('22')print my_average(1, 2, 3, 4, 5, '33')

0 0
原创粉丝点击