__MagicPower
Do one thing and do it best!

导航

 
 
#!/usr/bin/env python
#--*-- coding:utf-8 --*--
__author__ = 'Kevin'

def deco(func):
    def in_deco(xx,yy):
        print ('in deco')
        func(xx,yy)
    print ('call deco')
    return in_deco
#当Python解释器看到@deco的时候,会调用deco函数
#传入参数bar,即deco(bar),然后返回一个函数对象in_deco
#bar = in_deco
#bar() in_deco() bar()
#实质也是对闭包的使用
@deco
def bar(x,y):
    print('in bar',x+y)
print (type(bar))
bar(1,2)

#!/usr/bin/env python
#--*-- coding:utf-8 --*--
__author__ = 'Kevin'

def dec(func):
    print 'call dec!'
    def in_dec(*arg):
        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)
    print ('return in_dec')
    return in_dec

#当Python解释器看到@dec的时候,就会将
#my_sum作为参数传入dec中
#被装饰的函数my_sum指向新的函数in_dec
#装饰器的实质 就是对我们闭包的使用
@dec
def my_sum(*arg):#my_sum = in_dec
    print('in my_sum')
    return sum(arg)
#my_sum = dec(my_sum)
print (my_sum(1,2,3,4,5))

def my_average(*arg):
    return sum(arg)/len(arg)
posted on 2016-01-12 13:30  __MagicPower  阅读(127)  评论(0编辑  收藏  举报