Junior — Middle
Koja je uloga funkcije functools.wraps pri kreiranju dekoratora u Pythonu?
sobes.tech АИ
Одговор од АИ
Funkcija functools.wraps koristi se prilikom kreiranja dekoratora u Pythonu za očuvanje metapodataka originalne funkcije koju dekorator obuhvata. Bez korišćenja wraps, ime funkcije, njena dokumentacija (doc) i drugi atributi zamenjuju se atributima unutrašnje funkcije dekoratora, što otežava otklanjanje grešaka i dokumentaciju.
Primer upotrebe:
import functools
def my_decorator(func):
@functools.wraps(func)
def wrapper(*args, **kwargs):
print("Pre poziva funkcije")
result = func(*args, **kwargs)
print("Posle poziva funkcije")
return result
return wrapper
@my_decorator
def greet(name):
"Funkcija pozdrava"
print(f"Zdravo, {name}!")
print(greet.__name__) # Ispisaće 'greet', a ne 'wrapper'
print(greet.__doc__) # Ispisaće 'Funkcija pozdrava'
Na ovaj način, functools.wraps pomaže da se sačuvaju informacije o dekorisanoj funkciji, što poboljšava čitljivost i održavanje koda.