Sobes.tech
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.