Junior — Middle
Qual é o papel da função functools.wraps ao criar decoradores em Python?
sobes.tech IA
Resposta da IA
A função functools.wraps é usada ao criar decoradores em Python para preservar os metadados da função original que o decorador envolve. Sem usar wraps, o nome da função, a sua documentação (doc) e outros atributos são substituídos pelos atributos da função interna do decorador, o que dificulta a depuração e a documentação.
Exemplo de uso:
import functools
def my_decorator(func):
@functools.wraps(func)
def wrapper(*args, **kwargs):
print("Antes de chamar a função")
result = func(*args, **kwargs)
print("Depois de chamar a função")
return result
return wrapper
@my_decorator
def greet(name):
"Função de saudação"
print(f"Olá, {name}!")
print(greet.__name__) # Vai mostrar 'greet', não 'wrapper'
print(greet.__doc__) # Vai mostrar 'Função de saudação'
Assim, functools.wraps ajuda a manter as informações sobre a função decorada, melhorando a legibilidade e a manutenção do código.