老男孩Python运维自动化课程之--装饰器

  • 不带参数的装饰器
    def w1(main_func):
        def outer(*args, **kwargs):
            before_func(*args, **kwargs) #before_func定义忽略
    
            main_func(*args, **kwargs)
    
            after_func(*args, **kwargs)  #after_func定义忽略
        return outer
    
    @w1
    def show()
        pass
    # 装饰器w1将show作为其第一个参数,并使用返回值重新定义了show
  • 带参数的装饰器
    def login(name, password)...
    
    def errorHandler()...
    
    def Filter(before_func, after_func):
        def outer(main_func):
            def wrapper(*args, **kwargs):
                before_result = before_func(*args, **kwargs)
                main_result = main_func(*args, **kwargs)
                after_result = after_func(*args, **kwargs)
        return wrapper
    return outer
    
    @Filter(login, errorHandler)
    def show():
        pass
    
    #先运行一次Filter(login, errorHandler),用返回值替换自身。然后再运行outer(main_func)
    

      

 

转载于:https://www.cnblogs.com/bettybear/p/5470880.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值