Junior — Middle
Que consequências acontecem se um decorador em Python não retornar um valor?
sobes.tech IA
Resposta da IA
Если декоратор в 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