Zdobądź zawód w IT!     |       Ścieżki Kariery 30% taniej     |      Jeszcze przez:

1 dni 19 godzin
close
Cart icon
User menu icon
User icon
Skontaktuj się z nami:
+48 888-916-333
Lightbulb icon
Jak to działa?
FAQ icon
FAQ
Contact icon
Kontakt
Terms of service icon
Regulamin zakupów
Privacy policy icon
Polityka prywatności
Macierze i wyznaczniki macierzy

Python - dekoratory

W tym artykule wyjaśnimy, czym są dekoratory w języku Python oraz jaką funkcję pełnią. Rozpoczniemy od objaśnienia definicji dekoratora, a następnie przejdziemy do prostego przykładu. Do zrozumienia artykułu potrzebujesz podstawowej wiedzy na temat języka Python.

Python - programowanie funkcyjne

Poznaj techniki programowania funkcyjnego w Python - twórz czytelny, zrozumiały i łatwy do testowania kod. Dzięki funkcyjnemu podejściu możesz tworzyć kod, który ma mniej błędów, jest łatwiejszy do testowania i łatwiejszy w utrzymaniu. Dowiedz się więcej

Co to jest dekorator

Dekorator w Pythonie to specjalna funkcja, która "owija" inną funkcję lub metodę i pozwala zmodyfikować jej zachowanie bez zmiany samego ciała funkcji. Można to sobie wyobrazić jak dodanie dodatkowej warstwy (dekoracji) do istniejącej funkcji.

Przykład

Spójrz na prosty przykład dekoratora:

def my_decorator(func):
def wrapper():
    print("Before func.")
    func()
    print("After func.")
return wrapper

@my_decorator
def say_hello():
    print("Hello!")

say_hello()

Rezultat działania skryptu jest następujący:

Before func.
Hello!
After func.

Opis działania skryptu:

  • Definiujemy funkcję my_decorator(). Funkcja ta przyjmuje inną funkcję func jako argument.
  • Wewnątrz my_decorator(), definiujemy inną funkcję - wrapper(). Funkcja wrapper() będzie “opakowywać” funkcję func().
  • wrapper() najpierw wykonuje pewien kod przed wywołaniem oryginalnej funkcji func(), w tym przypadku drukuje tekst przed wywołaniem.
  • Następnie wrapper() wywołuje func(), czyli oryginalną funkcję, którą chcemy udekorować.
  • Po wywołaniu func(), wrapper() wykonuje jeszcze kod, drukuje tekst po wywołaniu funkcji.
  • my_decorator() zwraca wrapper() jako wynik. Teraz wrapper() jest “dekoracją” dla naszej oryginalnej funkcji.
  • Dekorujemy funkcjęsay_hello()za pomocą my_decorator(). Robimy to, używając symbolu @ przed definicją funkcji say_hello().
  • Wywołując say_hello(), faktycznie wywołujemy wrapper(), który dodaje dodatkowe zachowanie przed i po wywołaniu say_hello().

Python - programowanie funkcyjne

Poznaj techniki programowania funkcyjnego w Python - twórz czytelny, zrozumiały i łatwy do testowania kod. Dzięki funkcyjnemu podejściu możesz tworzyć kod, który ma mniej błędów, jest łatwiejszy do testowania i łatwiejszy w utrzymaniu. Dowiedz się więcej

Dekoratory są bardzo potężnym narzędziem w Pythonie, pozwalającym na elastyczne modyfikowanie funkcji, ponieważ pozwalają one na dodawanie funkcjonalności do istniejących funkcji "z zewnątrz", nie zmieniając ich wewnętrznej implementacji.