0Pricing
Learn AI with Python · Lekcja

Dekoratory

Naucz się używać dekoratorów do modyfikowania lub rozszerzania funkcji.

Dekoratory to bezpłatna lekcja Learn AI with Python na CoddyKit. To lekcja 1 z 5. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Learn AI with Python, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Learn AI with Python zawiera 5 lekcji w sumie.

Wprowadzenie do dekoratorów

Wprowadzenie do dekoratorów

Dekoratory to zaawansowana funkcja języka Python, która umożliwia modyfikowanie działania funkcji lub metod. Często używa się ich do dodawania funkcjonalności do funkcji bez modyfikowania ich kodu.

W tej lekcji dowiedzą się Państwo, czym są dekoratory, jak ich używać oraz jak tworzyć własne dekoratory.

Dekoratory — ilustracja 1

Czym jest dekorator?

Czym jest dekorator?

Dekorator to funkcja, która przyjmuje inną funkcję jako dane wejściowe i zwraca nową funkcję z dodaną funkcjonalnością. Często używa się go wraz ze składnią @decorator_name.

# Basic example of a decorator
def decorator(func):
    def wrapper():
        print("Before the function call")
        func()
        print("After the function call")
    return wrapper

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

say_hello()

Jak działają dekoratory

Jak działają dekoratory

Po użyciu dekoratora Python zastępuje oryginalną funkcję funkcją opakowującą zwróconą przez dekorator.

# How decorators work
def decorator(func):
    def wrapper():
        print("Wrapper called")
        func()
    return wrapper

@decorator
def greet():
    print("Greetings!")

print(greet.__name__)  # Outputs: wrapper
greet()

Używanie dekoratorów z argumentami

Używanie dekoratorów z argumentami

Dekoratory mogą współpracować z funkcjami przyjmującymi argumenty dzięki użyciu *args i **kwargs w funkcji opakowującej:

# Decorator for functions with arguments
def decorator(func):
    def wrapper(*args, **kwargs):
        print(f"Arguments: {args}, {kwargs}")
        return func(*args, **kwargs)
    return wrapper

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

print(add(3, 5))

Łączenie wielu dekoratorów

Łączenie wielu dekoratorów

Na jednej funkcji można użyć wielu dekoratorów. Są one stosowane w kolejności, w której występują, od góry do dołu:

# Chaining multiple decorators
def decorator1(func):
    def wrapper():
        print("Decorator 1")
        func()
    return wrapper

def decorator2(func):
    def wrapper():
        print("Decorator 2")
        func()
    return wrapper

@decorator1
@decorator2
def greet():
    print("Hello!")

greet()

Tworzenie dekoratorów przyjmujących parametry

Tworzenie dekoratorów przyjmujących parametry

Dekoratory przyjmujące parametry pozwalają przekazywać argumenty, zapewniając większą elastyczność działania:

# Parameterized decorator
def repeat(times):
    def decorator(func):
        def wrapper(*args, **kwargs):
            for _ in range(times):
                func(*args, **kwargs)
        return wrapper
    return decorator

@repeat(3)
def say_hello():
    print("Hello!")

say_hello()

Typowe zastosowania dekoratorów

Typowe zastosowania dekoratorów

Dekoratory są często używane do:

  • Rejestrowania wywołań funkcji i przekazywanych do nich argumentów.
  • Mierzenia czasu wykonywania funkcji.
  • Kontroli dostępu (np. sprawdzania uprawnień użytkowników).
  • Cachowania wyników w celu zwiększenia wydajności.

Wbudowane dekoratory w Pythonie

Wbudowane dekoratory w Pythonie

Python udostępnia kilka wbudowanych dekoratorów, w tym:

  • @staticmethod: Definiuje metodę statyczną.
  • @classmethod: Definiuje metodę klasową.
  • @property: Definiuje właściwość.

Typowe błędy dotyczące dekoratorów

Typowe błędy dotyczące dekoratorów

Oto kilka błędów, których należy unikać:

  • Niezachowywanie nazwy i docstringa oryginalnej funkcji (należy użyć functools.wraps).
  • Niepotrzebne używanie dekoratorów do prostych zadań.
  • Zapominanie o obsłudze argumentów w funkcji opakowującej.

Czego się nauczyliśmy?

Czego się nauczyliśmy?

W tej lekcji nauczyli się Państwo:

  • Czym są dekoratory i jak działają w języku Python.
  • Jak tworzyć i używać podstawowych, sparametryzowanych oraz łańcuchowych dekoratorów.
  • Jakie są typowe zastosowania i wbudowane dekoratory w języku Python.

Świetna praca! Przejdźmy do następnego tematu.

Dekoratory — ilustracja 11

Często zadawane pytania

Czy lekcja „Dekoratory” jest bezpłatna?

Tak — pełny tekst „Dekoratory” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Learn AI with Python, przejdź na CoddyKit PRO. Kurs Learn AI with Python zawiera 5 lekcji w sumie.

Co nauczysz się w „Dekoratory”?

Naucz się używać dekoratorów do modyfikowania lub rozszerzania funkcji. Ćwiczysz Learn AI with Python z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Learn AI with Python?

Nie wymagamy żadnego doświadczenia. Learn AI with Python w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 5.

Ile czasu zajmuje lekcja „Dekoratory”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Learn AI with Python?

Tak. Każda lekcja Learn AI with Python zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Dekoratory
  2. Generatory
  3. Menedżery kontekstu (instrukcje with)
  4. Wyrażenia składane (listy, zbiory i słowniki)
  5. Iteratory i obiekty iterowalne
← Powrót do Learn AI with Python