python复杂装饰器

博主新公司上班第一天学习装饰器框架。针对搜索功能模块,需求是运行前进行登录验证、出错时捕捉错误。实现时采用稍复杂的装饰器,只需写一个,后续修改功能时仅需修改装饰器函数。程序运行逻辑有相关说明。

浪了几天又要开始学习啦,今天新公司上班第一天,自己学的是装饰器框架,不需要经常写装饰器,只要写函数即可。

以下是程序说明:

需求:有个搜索功能模块, 希望在允许他允许前进行登录验证,运行出错了会捕捉错误,搜索功能开发以及完成。

实现,创建装饰器,但是需要创建2个装饰器一个运行前一个运行后。现在使用一种稍复杂的装饰器实现,只要写一个,以后有其他任何功能,只需要修改装饰器函数,不需要修改装饰器。

以下程序先运行w1(login,errfetch)部分,返回func函数,即@w1(login,errfetch)等于@func(serch),在调用serch('yellow','asdf'),即向inner函数传入了yellow,asdf两个参数,后面就不解释啦~

 

def login(name,passwd):
    print('验证通过!')

def errfetch(err):
    print('there is an error')

def w1(login,errfatch):
    def func(main):
        def inner(request,passwd):
            login_ret=login(request,passwd)
            if login_ret!='None':
                return login_ret
            main_rst=main(request,passwd)
            if main_rst!='None':
                return main_rst
            errfatch_rst=errfetch(request)
            if errfatch_rst!='None':
                return errfatch_rst
        return inner;
    return func;
@w1(login,errfetch)
def search(name,pas): print(
'welcome to my home,%s!'%name)
search('yellow','asdf')

 

转载于:https://www.cnblogs.com/huayng/p/9545544.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值