Sobes.tech
Junior — Middle

Vai jums ir pieredze dekoratoru izmantošanā savos projektos?

sobes.tech AI

Atbilde no AI

Jā, savos projektos esmu izmantojis dekoratorus, lai paplašinātu funkciju un meto funkcionalitāti, nemainot to avota kodu. Piemēram, funkciju izsaukumu reģistrēšanai, izpildes laika mērīšanai vai piekļuves tiesību pārbaudīšanai.

Vienkārša dekoratora piemērs reģistrēšanai:

def log_calls(func):
    def wrapper(*args, **kwargs):
        print(f"Funkcijas {func.__name__} izsaukums ar argumentiem {args} {kwargs}")
        result = func(*args, **kwargs)
        print(f"Funkcija {func.__name__} atgrieza {result}")
        return result
    return wrapper

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

add(2, 3)

Dekoratori palīdz rakstīt tīrāku un uzturējamāku kodu, īpaši testu automatizācijā, kur bieži ir nepieciešams pievienot atkārtojošas darbības ap testu funkcijām.