Junior — Middle
Akú úlohu má funkcia functools.wraps pri vytváraní dekorátorov v Pythone?
sobes.tech AI
Odpoveď od AI
Funkcia functools.wraps sa používa pri vytváraní dekorátorov v Pythone na zachovanie metadát pôvodnej funkcie, ktorú dekorátor obklopí. Bez použitia wraps sú názov funkcie, jej dokumentácia (doc) a ďalšie atribúty nahradené atribútmi vnútornej funkcie dekorátora, čo sťažuje ladenie a dokumentáciu.
Príklad použitia:
import functools
def my_decorator(func):
@functools.wraps(func)
def wrapper(*args, **kwargs):
print("Pred volaním funkcie")
result = func(*args, **kwargs)
print("Po volaní funkcie")
return result
return wrapper
@my_decorator
def greet(name):
"Funkcia pozdravu"
print(f"Ahoj, {name}!")
print(greet.__name__) # Vytlačí 'greet', nie 'wrapper'
print(greet.__doc__) # Vytlačí 'Funkcia pozdravu'
Týmto spôsobom pomáha functools.wraps zachovať informácie o dekorovanej funkcii, čo zlepšuje čitateľnosť a údržbu kódu.