Sobes.tech
Junior — Middle

Wyjaśnij koncepcję dekoratorów w Pythonie i jak są one używane do zmiany zachowania funkcji.

sobes.tech AI

Odpowiedź od AI

Dekoratory w Pythonie to funkcje, które przyjmują inną funkcję i zwracają nową funkcję z zmienionym lub rozszerzonym zachowaniem, nie zmieniając kodu źródłowego dekorowanej funkcji.

Są często używane do:

  • Logowania wywołań
  • Sprawdzania uprawnień dostępu
  • Pamięci podręcznej wyników
  • Pomiaru czasu wykonania

Przykład prostego dekoratora, który wyświetla wiadomość przed i po wywołaniu funkcji:

def decorator(func):
    def wrapper(*args, **kwargs):
        print("Przed wywołaniem funkcji")
        result = func(*args, **kwargs)
        print("Po wywołaniu funkcji")
        return result
    return wrapper

@decorator
def powiedz_czesc(name):
    print(f"Cześć, {name}!")

powiedz_czesc("Świecie")

Wynik będzie wyglądał tak:

Przed wywołaniem funkcji
Cześć, Świecie!
Po wywołaniu funkcji

W ten sposób dekoratory pozwalają na dynamiczną zmianę zachowania funkcji bez zmiany ich kodu źródłowego.