美文网首页
Python基础(12)——装饰器

Python基础(12)——装饰器

作者: _羊羽_ | 来源:发表于2018-07-16 00:55 被阅读746次

    python装饰器就是用于拓展原来函数功能的一种函数,这个函数的特殊之处在于它的返回值也是一个函数(函数的指针),使用python装饰器的好处就是在不用更改原函数的代码前提下给函数增加新的功能
    给当前代码增加代码执行时间

    import time
    
    def func():
        beginTime = time.time()
        print("hello world")
        time.sleep(2)
        print("hello python")
        endTime = time.time()
        print(endTime-beginTime)
    
    func()
    
    

    如果需要在其他函数也增加代码执行时间,工作存在很大的重复性

    import time
    
    def foo():
        print("hello world")
        time.sleep(2)
        print("hello python")
    
    
    def decorator(func):
        beginTime = time.time()
        func()
        endTime = time.time()
        print(endTime - beginTime)
    
    
    if __name__=='__main__':
        f = foo
        decorator(f)  # 只有把func()或者f()作为参数执行,新加入功能才会生效
        print("
    

    装饰器表示

    import time
    
    def deco(func):
        def wrapper():
            beginTime = time.time()
            func()
            endTime = time.time()
            print(endTime - beginTime)
        return wrapper
    
    @deco
    def foo():
        print("hello world")
        time.sleep(2)
        print("hello python")
    
    
    if __name__=='__main__':
        foo()
    

    带有参数的装饰器

    import time
    
    
    def addDeco(func):
        def wrapper(a,b):
            beginTime = time.time()
            func(a,b)
            endTime = time.time()
            print(endTime - beginTime)
    
        return wrapper
    
    
    @addDeco
    def bar(a,b):
        print("bar func")
        time.sleep(1)
        print("add result:",a+b)
    
    
    
    if __name__=='__main__':
        bar(4,6)
    
    

    相关文章

      网友评论

          本文标题:Python基础(12)——装饰器

          本文链接:https://www.haomeiwen.com/subject/jbokqftx.html