python 装饰器应用示例

# -*- coding: UTF-8 -*-


import time


#附加参数
def extend(func):
    
    def _extend(*args, **kwArgs):
        
        print func.__name__
        if 'owner' not in kwArgs:
            kwArgs['owner'] = 'captain'
        
        return func(*args, **kwArgs)
    return _extend


#验证参数
def valid(func):
    
    def _valid(*args,**kwArgs):
        
        print func.__name__
        if kwArgs['owner'] == 'captain':
            print 'extend captain params'
        else:
            print 'ok'
        
        return func(*args,**kwArgs)
    
    return _valid


#装饰器带参数
def timeit(msg = None,ok = False):
    
    def _timeit(func):
        
        def _deco(*args,**kwArgs):
            start = time.clock()
            ret = func(*args,**kwArgs)
            end =time.clock()
            print 'used:', round((end - start)*1000,5)
            return ret
            
        return _deco
    
    return _timeit




#类似于承包商转包,真正的函数执行是在最底层的承包商(timeit),上层的只是做了资质或附加了条款/条件
@extend
@valid
@timeit(u'耗时')
def foo(*args,**kwArgs):
    
    for k,v in kwArgs.items():
        print k,':',v


if __name__ == "__main__":
    
    foo(b = 'a11',a = 'b22',owner = 'hd')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值