Приведи примеры декораторов в 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()
```
Декораторы широко используются для логирования, проверки прав доступа, кэширования и других задач.