Sobes.tech
Back to questions
Junior — Middle
62

Какие последствия наступают, если декоратор в Python не возвращает значение?

Answer from AI

sobes.tech AI

Если декоратор в Python не возвращает значение, то функция, которую он декорирует, после применения декоратора будет иметь значение None. Это приведёт к тому, что при вызове декорированной функции вы получите ошибку или неожидаемое поведение, так как вместо функции будет None.

Пример:

def decorator(func):
    def wrapper(*args, **kwargs):
        print("До вызова функции")
        result = func(*args, **kwargs)
        print("После вызова функции")
        # Нет return wrapper

def say_hello():
    print("Hello")

say_hello = decorator(say_hello)
say_hello()  # Ошибка: 'NoneType' object is not callable

Чтобы избежать этого, декоратор должен возвращать функцию-обёртку:

def decorator(func):
    def wrapper(*args, **kwargs):
        print("До вызова функции")
        result = func(*args, **kwargs)
        print("После вызова функции")
        return result
    return wrapper