decorator.py 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. # Базовый синтаксис декоратора в python
  2. def my_decorator(func):
  3. def wrapper_func():
  4. # Делаем что-то до вызова функции
  5. func()
  6. # Делаем что-то после вызова функции
  7. return wrapper_func
  8. '''
  9. def decorator(func):
  10. def wrapper():
  11. print('Start decorator')
  12. func()
  13. print('Finish decorator')
  14. return wrapper
  15. '''
  16. def decorator(func):
  17. def inner(*args, **kwargs):
  18. print('Стартуем декоратор')
  19. func(*args, **kwargs)
  20. print('Заканчиваем декоратор')
  21. return inner
  22. def decorator_2(func):
  23. def inner(*args, **kwargs):
  24. print('Стартуем декоратор')
  25. func_res = func(*args, **kwargs)
  26. print(f'Функция func вернула значение "{func_res}"')
  27. print('Заканчиваем декоратор')
  28. return func_res.swapcase()
  29. return inner
  30. @decorator_2
  31. def say_hello_to(name, surname):
  32. return f'Hello {name} {surname}'
  33. decorator
  34. def my_func():
  35. print('This is my mega function!')
  36. def header_h1(func):
  37. def inner(*args, **kwargs):
  38. result = func(*args, **kwargs)
  39. return f'<h1>{result}</h1>'
  40. return inner
  41. @header_h1
  42. def one_more_func(name, surname):
  43. return f'Hello {name} {surname}'
  44. def main():
  45. # res = say_hello_to('Vasya', 'Ivanov')
  46. # print(f'{res=}')
  47. res = one_more_func("gennadi", "LOSKOV")
  48. print(f'{res=}')
  49. if __name__ == '__main__':
  50. main()