首页 > 其他 > 详细

关于decorator一些东西

时间:2016-01-12 15:21:59      阅读:192      评论:0      收藏:0      [点我收藏+]
 
#!/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)

关于decorator一些东西

原文:http://www.cnblogs.com/magicpower/p/5124065.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!