0Pricing
Python Academy · Lekcja

Dekoratory

Dowiedz się, jak używać dekoratorów do modyfikowania lub rozszerzania funkcji

Dekoratory to bezpłatna lekcja Python Academy 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 Python Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Python Academy 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 dodatkową 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

Można użyć wielu dekoratorów dla jednej funkcji. 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 z parametrami

Tworzenie dekoratorów z parametrami

Dekoratory z parametrami przyjmują argumenty i umożliwiają uzyskanie bardziej elastycznego 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 ich argumentów,
  • mierzenia czasu wykonania funkcji,
  • kontroli dostępu, na przykład sprawdzania uprawnień użytkownika,
  • buforowania wyników w celu poprawy wydajności.

Wbudowane dekoratory w Pythonie

Wbudowane dekoratory w Pythonie

Python udostępnia kilka wbudowanych dekoratorów, między innymi:

  • @staticmethod: definiuje metodę statyczną,
  • @classmethod: definiuje metodę klasową,
  • @property: definiuje metodę właściwości.

Typowe błędy związane z dekoratorami

Typowe błędy związane z dekoratorami

Oto błędy, których należy unikać:

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

Czego się nauczyliśmy?

Czego się nauczyliśmy?

W tej lekcji dowiedzieli się Państwo:

  • czym są dekoratory i jak działają w Pythonie,
  • jak tworzyć i używać podstawowych dekoratorów, dekoratorów z parametrami oraz łączonych dekoratorów,
  • jakie są typowe zastosowania dekoratorów i jakie dekoratory są wbudowane w Pythona.

Ś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 Python Academy, przejdź na CoddyKit PRO. Kurs Python Academy zawiera 5 lekcji w sumie.

Co nauczysz się w „Dekoratory”?

Dowiedz się, jak używać dekoratorów do modyfikowania lub rozszerzania funkcji Ćwiczysz Python Academy 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ąć Python Academy?

Nie wymagamy żadnego doświadczenia. Python Academy 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 Python Academy?

Tak. Każda lekcja Python Academy 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. Składane struktury danych (listy, zbiory i słowniki)
  5. Iteratory i obiekty iterowalne
← Powrót do Python Academy