Junior — Middle
Kokia yra funkcijos functools.wraps vaidmuo kuriant dekoratorius Python?
sobes.tech AI
Atsakymas iš AI
Funkcija functools.wraps naudojama kuriant dekoratorius Python kalboje, siekiant išsaugoti pradinės funkcijos metaduomenis, kuriuos apgaubia dekoratorius. Be wraps naudojimo, funkcijos pavadinimas, jos dokumentacija (doc) ir kiti atributai yra pakeičiami dekoratoriaus vidinės funkcijos atributais, kas apsunkina klaidų paiešką ir dokumentaciją.
Naudojimo pavyzdys:
import functools
def my_decorator(func):
@functools.wraps(func)
def wrapper(*args, **kwargs):
print("Prieš funkcijos kvietimą")
result = func(*args, **kwargs)
print("Po funkcijos kvietimo")
return result
return wrapper
@my_decorator
def greet(name):
"Pasveikinimo funkcija"
print(f"Labas, {name}!")
print(greet.__name__) # Parodys 'greet', o ne 'wrapper'
print(greet.__doc__) # Parodys 'Pasveikinimo funkcija'
Taip, functools.wraps padeda išsaugoti dekoruotos funkcijos informaciją, kas pagerina kodo skaitomumą ir priežiūrą.