Sobes.tech
Назад к вопросам
Middle
8

Что такое декоратор в Python? Как работает? Как сделать декоратор с аргументами?

Компании, где спрашивали
Gear Games

Ответ от нейросети

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')

Таким образом, декораторы позволяют удобно расширять поведение функций.