1 装饰器程序初步
- import time
- def func():
- time.sleep(0.01)
- print("程序运行干活...")
- def timer(f):
- def inner():
- time1 = time.time()
- f()
- time2 = time.time()
- print(time2-time1)
- return inner
- func = timer(func)
- func()
- View Code
使用 @符号
- import time
- def timer(f):
- def inner():
- time1 = time.time()
- f()
- time2 = time.time()
- print(time2-time1)
- return inner
- @timer
- def func():
- time.sleep(0.01)
- print("程序运行干活...")
- func()
2 装饰器的定式:
- def wrapper(func): # 装饰器函数, func 是被装饰的函数
- def inner(*args, **kwargs):
- '''装饰器在装饰的函数运行前要执行的工作'''
- ret = func(*args,**kwargs)
- '''装饰器在装饰的函数运行后要执行的工作'''
- return ret # 返回被装饰函数的执行结果
- return inner
- @wrapper # 语法糖, qqqing = wrapper(qqqing)
- def qqqing(a,b): # 被装饰的函数
- print(a,b)
- return max(a,b)
- # 正常调用函数
- print(qqqing(2,3))
来源: http://www.bubuko.com/infodetail-2846804.html