zoukankan      html  css  js  c++  java
  • Python 装饰器简单介绍

    def log(func):
        def wrapper(*args, **kw):
            print '===call %s():' %func.__name__
            return func(*args, **kw)
        return wrapper
    
    def logWithParam(text):
        def decorator(func):
            def wrapper(*args, **kw):
                print '%s ===call %s():' % (text, func.__name__)
                return func(*args, **kw)
            return wrapper
        return decorator
    
    def logWithParamOrNot(text = 'test'):
        def decorator(func):
            def wrapper(*args, **kw):
                print '%s ===call %s():' % (text, func.__name__)
                return func(*args, **kw)
            return wrapper
        return decorator
    
    def logWithPrint(func):
        def wrapper(*args, **kw):
            print 'begin call %s():' % func.__name__
            func(*args, **kw)
            print 'end call %s():' % func.__name__
            # do not need return
        return wrapper
    
    # @log                  # now = log(now)
    # @logWithParam('test')  # now = logWithParam('test')(now)
    # @logWithParamOrNot()  # now = logWithParamOrNot(now)
    @logWithPrint           # now = logWithPrint(now)
    def now():
        print '2016-5-17'
    
    
    if __name__ == '__main__':
        now()

    参考资料:

      http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001386819879946007bbf6ad052463ab18034f0254bf355000#0

  • 相关阅读:
    Bzoj4627 [BeiJing2016]回转寿司
    Bzoj1901 Zju2112 Dynamic Rankings
    COGS728. [网络流24题] 最小路径覆盖问题
    Bzoj4568 [Scoi2016]幸运数字
    Bzoj2728 [HNOI2012]与非
    HDU4609 3-idiots
    Bzoj2194 快速傅立叶之二
    Bzoj2179 FFT快速傅立叶
    模拟52 题解
    模拟51 题解
  • 原文地址:https://www.cnblogs.com/afluy/p/5500810.html
Copyright © 2011-2022 走看看