zoukankan      html  css  js  c++  java
  • python装饰器

    python装饰器对方法进行修饰,从而改变原有方法的行为,添加额外的逻辑。JAVA中可以类比于SpringMVC的AOP,对Controller中添加额外逻辑。

    无参装饰

    python装饰器使用两层方法嵌套,返回内层方法,中间调用被装饰的方法。

    from functools import wraps
    import time
    
    def caesar(func):
        @wraps(func)
        def wrappers(*args, **kwargs):
            t0 = time.time()
            ret = func(*args, **kwargs)
            t = time.time() - t0
            print str(t)
            return ret
        return wrappers
    
    @caesar
    def example():
        print "caesar come here...."
    

    执行结果,如下:

    有参装饰

    如果再添加参数,就需要再嵌套一层函数,比如加一个参数来进行方法执行次数。

    from functools import wraps
    import time
    
    def retry_run(times=None):
        def inner_func(func):
            @wraps(func)
            def wrappers(*args, **kwargs):
                t0 = time.time()
                if times:
                    for i in range(times):
                        ret = func(*args, **kwargs)
                else:
                    ret = func(*args, **kwargs)
                t = time.time() - t0
                print str(t)
                return ret
            return wrappers
        return inner_func
    
    @retry_run(times=3)
    def example():
        print "caesar come here...."
    

    执行后,结果如下 

  • 相关阅读:
    linux初学者-普通磁盘分区篇
    linux初学者-延迟及定时任务篇
    linux初学者-网络管理篇
    linux初学者-虚拟机联网篇
    贪吃蛇Ground Java实现(二)
    贪吃蛇 Java实现(一)
    创建异常
    IO流
    实训第一天
    Array 遍历数组
  • 原文地址:https://www.cnblogs.com/CaesarLinsa/p/9061680.html
Copyright © 2011-2022 走看看