Dekoratory
Naucz się używać dekoratorów do modyfikowania lub rozszerzania funkcji.
Dekoratory to bezpłatna lekcja Python For Kids 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 For Kids, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Python For Kids zawiera 5 lekcji w sumie.
Wprowadzenie do dekoratorów
Dekoratory to zaawansowana funkcja języka Python, która pozwala modyfikować działanie 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.

Czym jest dekorator?
Dekorator to funkcja, która przyjmuje inną funkcję jako argument 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
Podczas używania 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
Dekoratory mogą współpracować z funkcjami przyjmującymi argumenty, jeśli w funkcji opakowującej użyje się *args i **kwargs:
# 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
Na jednej funkcji można użyć wielu dekoratorów. Są one stosowane w kolejności, w jakiej 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
Dekoratory z parametrami przyjmują argumenty i umożliwiają elastyczniejsze działanie:
# 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
Dekoratory są często używane do:
- rejestrowania wywołań funkcji i ich argumentów,
- mierzenia czasu wykonywania funkcji,
- kontroli dostępu, na przykład sprawdzania uprawnień użytkownika,
- buforowania wyników w celu zwiększenia wydajności.
Wbudowane dekoratory w Pythonie
Python udostępnia kilka wbudowanych dekoratorów, w tym:
@staticmethod: definiuje metodę statyczną.@classmethod: definiuje metodę klasową.@property: definiuje metodę właściwości.
Częste błędy związane z dekoratorami
Oto błędy, których należy unikać:
- Nie zachowywanie oryginalnej nazwy funkcji i jej dokumentacji (należy użyć
functools.wraps). - Używanie dekoratorów bez potrzeby w przypadku prostych zadań.
- Zapominanie o obsłudze argumentów w funkcji opakowującej.
Czego się nauczyliśmy?
W tej lekcji poznasz:
- Czym są dekoratory i jak działają w Pythonie.
- Jak tworzyć i używać podstawowych dekoratorów, dekoratorów sparametryzowanych oraz łańcuchów dekoratorów.
- Typowe zastosowania i wbudowane dekoratory w Pythonie.
Świetna praca! Przejdźmy do następnego tematu.

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 For Kids, przejdź na CoddyKit PRO. Kurs Python For Kids zawiera 5 lekcji w sumie.
Co nauczysz się w „Dekoratory”?
Naucz się używać dekoratorów do modyfikowania lub rozszerzania funkcji. Ćwiczysz Python For Kids 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 For Kids?
Nie wymagamy żadnego doświadczenia. Python For Kids 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 For Kids?
Tak. Każda lekcja Python For Kids 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
- Dekoratory
- Generatory
- Menedżery kontekstu (instrukcje with)
- Wyrażenia składane (listy, zbiory i słowniki)
- Iteratory i obiekty iterowalne