Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1153625
  • 博文数量: 220
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1769
  • 用 户 组: 普通用户
  • 注册时间: 2015-03-13 16:19
个人简介

努力, 努力, 再努力

文章分类

全部博文(220)

文章存档

2018年(8)

2017年(46)

2016年(75)

2015年(92)

我的朋友

分类: Python/Ruby

2016-09-27 23:58:10


def deco(arg):   #最外层函数定义的参数是=装饰函数的参数,该参数也可以是个类
    def _deco(func):  #中间层函数定义的参数是=被装饰函数的名称
        def __deco(*args,**kwargs):  #最内层函数定义的参数=传递给被装饰函数
            print '='*40
            print "before %s called [%s]." % (func.__name__,arg)
            ret=func(*args,**kwargs)
            print func         #打印被装饰函数的内存地址
            print "after %s called.[%s]." % (func.__name__,arg)
            return ret        #返回被装饰函数的返回值
        return __deco      #将最内层函数作为值返回
    return _deco            #返回中间层函数

@deco("mymodule")
def myfunc(a,b):
    print ("myfunc(%s,%s) called" % (a,b))
    return a + b

@deco("mymodule2")
def myfunc2(a,b,c):
    print ("myfunc(%s,%s,%s) called." % (a,b,c))
    return a + b + c

myfunc(1,4)
myfunc2(5,6,9)
阅读(2389) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~