Python装饰器

2018-11-07  本文已影响0人  黄褐色猫头鹰
#Python装饰器(decorator)
#类似java中的装饰设计模式, 用来增强原有的功能
#实际原理还是使用到闭包函数
import time
def timmer(func):
    def wrapper():
        start_time = time.time()
        func()
        end_time = time.time()
        print("运行时间是 %s 秒" %(end_time - start_time))
    return wrapper

@timmer
def i_can_sleep():
    time.sleep(3)

i_can_sleep() #运行时间是 3.0001325607299805 秒

#对于装饰器需要被装饰方法的参数的写法如下
def tips(func):
    def nei(a, b):
        print('start', end='|')
        func(a, b)
        print('stop', end='|')
    return nei

@tips
def add(a, b):
    print(a + b, end='|')

add(4, 5) #start|9|stop|


#对于直接传递参数给装饰器的写法
def new_tips(args):
    print(args, end='|')
    def tips(func):
        print(func.__name__)
        def nei(a, b):
            print('start', end='|')
            func(a, b)
            print('stop', end='|')
        return nei
    return tips

@new_tips('new_add') #直接在装饰器上添加参数
def new_add(a, b):
    print(a + b, end='|')

new_add(1, 2) #new_add|start|3|stop|


上一篇 下一篇

猜你喜欢

热点阅读