装饰器 装饰带参数的函数和添加函数

修饰带参数函数

1.带参数函数func1

def func1(arg):
    print arg

2.装饰器

def outer(fun):
    def wrapper(arg):
        print 'test'
        fun(arg)
    return wrapper

装饰器outer时期返回函数wrapper,由于要func1 带有参数,如需要将wrapper的函数带上参数,func1被装饰后重新定义为:

func1(arg)=wrapper(arg)=
                         {
                             print 'test'
                             func1(arg)     
                             }

 

在修饰器中使用函数修饰

要添加的额外函数有

def before():
    print 'before'
    
def after():
    print 'after'

主体函数:

def main():
    print 'main'

装饰器:

def filter(before_func,after_func):        #要在主体函数前 和 函数后再执行的函数名
    def outer(main_func):                   
        def wrapper():
             before_result=before_func()   #如果前函数不为None,则执行
             if(before_result!=None):
                 return before_result
             main_result=main_func()        #执行主体函数
             if(main_result!=None):
                 return main_result
             after_result=after_func()     #如果后函数不为None,则执行
             if(after_result!=None):
                 return after_result
        return wrapper
    return outer

执行结果,打印出:

before
main
after

 

转载于:https://www.cnblogs.com/white-small/p/6289281.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值