Sobes.tech
Junior — Middle

Kas teil on kogemusi dekoratiivsete funktsioonide kasutamisel oma projektides?

sobes.tech AI

Vastus AI-lt

Jah, oma projektide raames olen kasutanud dekoraatoreid funktsioonide ja meetodite funktsionaalsuse laiendamiseks ilma nende lähtekoodi muutmata. Näiteks funktsioonikutsumiste logimiseks, täitmisaja mõõtmiseks või juurdepääsuõiguste kontrollimiseks.

Lihtsa dekoratsiooni näide logimiseks:

def log_calls(func):
    def wrapper(*args, **kwargs):
        print(f"Funktsiooni {func.__name__} kutsumine args: {args}, kwargs: {kwargs}")
        result = func(*args, **kwargs)
        print(f"Funktsioon {func.__name__} tagastas {result}")
        return result
    return wrapper

@log_calls
def add(a, b):
    return a + b

add(2, 3)

Dekoratsioonid aitavad kirjutada puhtamat ja hooldatavamat koodi, eriti testide automatiseerimisel, kus sageli on vaja lisada korduvaid tegevusi testifunktsioonide ümber.