Junior — Middle
Kāda ir funkcijas functools.wraps loma, izveidojot dekoratorus Python?
sobes.tech AI
Atbilde no AI
Funkcija functools.wraps tiek izmantota, veidojot dekoratorus Python, lai saglabātu sākotnējās funkcijas metadatus, ko apkārt dekorators. Bez wraps izmantošanas funkcijas nosaukums, tās dokumentācija (doc) un citi atribūti tiek aizstāti ar dekoratora iekšējās funkcijas atribūtiem, kas apgrūtina kļūdu meklēšanu un dokumentāciju.
Piemērs:
import functools
def my_decorator(func):
@functools.wraps(func)
def wrapper(*args, **kwargs):
print("Pirms funkcijas izsaukšanas")
result = func(*args, **kwargs)
print("Pēc funkcijas izsaukšanas")
return result
return wrapper
@my_decorator
def greet(name):
"Sveiciena funkcija"
print(f"Sveiki, {name}!")
print(greet.__name__) # Izvadīs 'greet', ne 'wrapper'
print(greet.__doc__) # Izvadīs 'Sveiciena funkcija'
Tādējādi, functools.wraps palīdz saglabāt informāciju par dekorēto funkciju, uzlabojot koda lasāmību un uzturēšanu.