Użyj dekoratorów Pythona

Jan 19 2023
Dekoratory to potężne narzędzie, którego można używać do dodawania funkcjonalności do istniejących funkcji i klas bez modyfikowania ich kodu. Mogą być używane do zadań, takich jak rejestrowanie, buforowanie i sprawdzanie poprawności, i mogą pomóc w utrzymaniu porządku i konserwacji kodu.

Dekoratory to potężne narzędzie, którego można używać do dodawania funkcjonalności do istniejących funkcji i klas bez modyfikowania ich kodu. Mogą być używane do zadań, takich jak rejestrowanie, buforowanie i sprawdzanie poprawności, i mogą pomóc w utrzymaniu porządku i konserwacji kodu.

Czym więc są dekoratorzy?

Dekorator jest specjalnym rodzajem funkcji, która jako argument przyjmuje inną funkcję i zwraca nową funkcję. Nowa funkcja jest zwykle zmodyfikowaną wersją oryginalnej funkcji i często służy do dodawania dodatkowych funkcji.

Jak używać?

Dekorator jest stosowany do funkcji lub klasy poprzez umieszczenie symbolu „@”, po którym następuje nazwa funkcji dekoratora przed definicją funkcji lub klasy.

Oto przykład prostego dekoratora, który dodaje do funkcji funkcję rejestrowania:

def log_decorator(func):
    def wrapper(*args, **kwargs):
        print("Calling function:", func.__name__)
        result = func(*args, **kwargs)
        print("Function returned:", result)
        return result
    return wrapper

@log_decorator
def my_function(x, y):
    return x + y

my_function(1, 2)

Dane wyjściowe tego kodu będą następujące:

Calling function: my_function
Function returned: 3

Dekoratory dawek mogą uzyskać wartości?

Tak! Możesz także bardzo łatwo przekazywać argumenty dekoratorom

def repeat(num):
    def repeat_decorator(func):
        def wrapper(*args, **kwargs):
            for i in range(num):
                result = func(*args, **kwargs)
            return result
        return wrapper
    return repeat_decorator

@repeat(num=3)
def my_function(x):
    return x * x

print(my_function(3))

Pamiętać?

dekoratory to specjalny rodzaj funkcji, które przyjmują inną funkcję jako argument i zwracają nową funkcję, zwykle zmodyfikowaną wersję oryginalnej funkcji, która służy do dodawania funkcjonalności. Stosuje się je do funkcji lub klasy, umieszczając przed definicją funkcji lub klasy symbol „@”, po którym następuje nazwa funkcji dekoratora. Mogą również przyjąć argumenty w celu dalszego dostosowania zachowania dekoratora.

Powodzenia Szilo