Junior — Middle
Mi a szerepe a functools.wraps függvénynek Pythonban dekorátorok készítésekor?
sobes.tech MI
Válasz az MI-től
A functools.wraps függvény Pythonban dekorátorok készítésekor használatos az eredeti függvény metaadatai megőrzésére, amelyeket a dekorátor körülvesz. Wraps használata nélkül a függvény neve, dokumentációja (doc) és más attribútumai a dekorátor belső függvényének attribútumaivá válnak, ami megnehezíti a hibakeresést és a dokumentálást.
Használati példa:
import functools
def my_decorator(func):
@functools.wraps(func)
def wrapper(*args, **kwargs):
print("A függvény hívása előtt")
result = func(*args, **kwargs)
print("A függvény hívása után")
return result
return wrapper
@my_decorator
def greet(name):
"Üdvözlő függvény"
print(f"Szia, {name}!")
print(greet.__name__) # 'greet'-et fog kiírni, nem 'wrapper'
print(greet.__doc__) # 'Üdvözlő függvény'-t fog kiírni
Így a functools.wraps segít megőrizni a dekorált függvény információit, ami javítja a kód olvashatóságát és karbantarthatóságát.