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.

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.

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
- Dekoratory
- Generatory
- Menedżery kontekstu (instrukcje with)
- Składane struktury danych (listy, zbiory i słowniki)
- Iteratory i obiekty iterowalne