码迷,mamicode.com
首页 > 其他好文 > 详细

关于decorator一些东西

时间:2016-01-12 15:23:12      阅读:107      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!