Back to questions
Middle
7
Что такое декоратор в Python? Как работает? Как сделать декоратор с аргументами?
Companies where asked
Gear Games
Answer from AI
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():
print("Hello")
say_hello()
Декоратор с аргументами — это функция, которая возвращает декоратор. Это трёхуровневая конструкция:
def decorator_with_args(arg1, arg2):
def decorator(func):
def wrapper(*args, **kwargs):
print(f"Аргументы декоратора: {arg1}, {arg2}")
return func(*args, **kwargs)
return wrapper
return decorator
@decorator_with_args('foo', 'bar')
def greet(name):
print(f"Hello, {name}!")
greet('Alice')
Таким образом, декораторы позволяют удобно расширять поведение функций.