Приведи примеры декораторов в Python

Python Senior Билайн
Приведи примеры декораторов в Python
Ответы
Декораторы в Python — это функции, которые принимают другую функцию и расширяют её поведение без изменения её кода. Вот несколько примеров: - **Простой декоратор**: ``` def my_decorator(func): def wrapper(): print("До вызова функции") func() print("После вызова функции") return wrapper @my_decorator def say_hello(): print("Привет!") say_hello() ``` - **Декоратор с аргументами**: ``` def repeat(num_times): def decorator(func): def wrapper(*args, **kwargs): for _ in range(num_times): result = func(*args, **kwargs) return result return wrapper return decorator @repeat(num_times=3) def greet(name): print(f"Привет, {name}!") greet("Алиса") ``` - **Декоратор для замера времени**: ``` import time def timer(func): def wrapper(*args, **kwargs): start = time.time() result = func(*args, **kwargs) end = time.time() print(f"Функция {func.__name__} выполнилась за {end - start:.4f} сек") return result return wrapper @timer def slow_function(): time.sleep(2) slow_function() ``` Декораторы широко используются для логирования, проверки прав доступа, кэширования и других задач.