python中的装饰器

装饰器的基本使用。

  1. import time
  2. # 普通写法
  3. def CountTime(func):
  4. print("开始运行程序....")
  5. start = time.time()
  6. func()
  7. end = time.time()
  8. print("程序运行结束....")
  9. print(end-start)
  10. def myfunc():
  11. time.sleep(2)
  12. print("Hello World")
  13. CountTime(myfunc)
  14. # 使用装饰器的写法
  15. def CountTimeTwo(func):
  16. def Count():
  17. print("开始运行程序....")
  18. start = time.time()
  19. func()
  20. end = time.time()
  21. print("程序运行结束....")
  22. print(end-start)
  23. return Count
  24. @CountTimeTwo
  25. def myfuncTwo():
  26. time.sleep(2)
  27. print("Hello World")
  28. myfuncTwo()

多个装饰器可以作用在同一函数上。

给装饰器传递参数。

  1. import time
  2. # 带参数的装饰器
  3. def logger(msg):
  4. def CountTime(func):
  5. def Count():
  6. print(f"开始运行{msg}程序....")
  7. start = time.time()
  8. func()
  9. end = time.time()
  10. print("程序运行结束....")
  11. print(end-start)
  12. return Count
  13. return CountTime
  14. @logger(msg="A")
  15. def myfuncThree():
  16. time.sleep(2)
  17. print("Hello World,装饰器嵌套。")
  18. myfuncThree()