多层装饰器.py 763 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. # -*- coding: UTF-8 -*-
  2. def outer(flag):
  3. def wrapper(func):
  4. def inner(*args,**kwargs):
  5. if flag:
  6. print('before')
  7. result = func(*args,**kwargs)
  8. print('agter')
  9. else:
  10. r = func(*args,**kwargs)
  11. return result
  12. return inner
  13. return wrapper
  14. def do_something(arg):
  15. def wrapper():
  16. print('#' * 22)
  17. arg()
  18. print('#' * 22)
  19. return wrapper
  20. def decorator(func):
  21. def wrapper():
  22. print('*' * 19)
  23. func()
  24. print('*' * 19)
  25. return wrapper
  26. do_something(decorator)
  27. @do_something # inner = do_somethinf(decorator(inner))
  28. @decorator
  29. def inner():
  30. print('xdc')
  31. print('xdc.ink')
  32. inner()