Użyj dekoratorów Pythona
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

![Czym w ogóle jest lista połączona? [Część 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































