Назад к вопросам
Middle
1
Расскажите про декораторы в Python: что это за паттерн и как реализовать декоратор с аргументами?
Компании, где спрашивали
Navio
Ответ от нейросети
sobes.tech AI
Декоратор в Python — это паттерн проектирования, который позволяет обернуть функцию или метод, добавляя дополнительное поведение без изменения исходного кода.
Простейший декоратор — функция, принимающая другую функцию и возвращающая новую функцию:
def decorator(func):
def wrapper(*args, **kwargs):
print("До вызова функции")
result = func(*args, **kwargs)
print("После вызова функции")
return result
return wrapper
@decorator
def say_hello(name):
print(f"Привет, {name}!")
say_hello("Мир")
Для создания декоратора с аргументами нужен дополнительный уровень вложенности:
def repeat(times):
def decorator(func):
def wrapper(*args, **kwargs):
for _ in range(times):
func(*args, **kwargs)
return wrapper
return decorator
@repeat(3)
def greet(name):
print(f"Привет, {name}!")
greet("Анна")
Здесь repeat — функция, принимающая аргумент times и возвращающая декоратор. Такой подход позволяет параметризовать поведение декоратора.