Generatory
Poznaj generatory i dowiedz się, jak wykorzystywać je do tworzenia iteratorów
Generatory to bezpłatna lekcja Python Academy na CoddyKit. To lekcja 2 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 generatorów
Wprowadzenie do generatorów
Generatory to specjalny rodzaj iteratorów w Pythonie, który umożliwia leniwe iterowanie po danych. Zamiast zwracać wszystkie dane naraz, generatory zwracają po jednym elemencie, dzięki czemu efektywnie wykorzystują pamięć.
W tej lekcji dowiedzą się Państwo, jak tworzyć i używać generatorów w Pythonie.

Czym jest generator?
Czym jest generator?
Generator to funkcja, która używa słowa kluczowego yield, aby zwracać wartości pojedynczo. Każde wywołanie metody next() generatora wznawia wykonanie od miejsca, w którym generator ostatnio zwrócił wartość.
# Basic generator example
def my_generator():
yield 1
yield 2
yield 3
# Using the generator
gen = my_generator()
print(next(gen)) # Outputs: 1
print(next(gen)) # Outputs: 2
print(next(gen)) # Outputs: 3Jak działają generatory
Jak działają generatory
Generatory zapisują stan funkcji, dzięki czemu mogą wznowić wykonanie dokładnie w miejscu, w którym je przerwały. Dzięki temu efektywnie wykorzystują pamięć i doskonale nadają się do pracy z dużymi zbiorami danych.
# Example: Generating a range of numbers
def range_generator(start, end):
while start < end:
yield start
start += 1
for number in range_generator(1, 5):
print(number) # Outputs: 1, 2, 3, 4Wyrażenia generatorowe
Wyrażenia generatorowe
Wyrażenia generatorowe przypominają wyrażenia listowe, ale zamiast nawiasów kwadratowych używają nawiasów okrągłych. Tworzą generatory, a nie listy.
# Generator expression
gen_exp = (x * x for x in range(5))
for value in gen_exp:
print(value) # Outputs: 0, 1, 4, 9, 16Generatory a listy
Generatory a listy
Generatory efektywniej wykorzystują pamięć niż listy, ponieważ nie przechowują wszystkich danych w pamięci. Zamiast tego generują dane na bieżąco.
# Comparing lists and generators
# List comprehension
list_comp = [x * x for x in range(1000000)]
# Generator expression
gen_exp = (x * x for x in range(1000000))
# List comprehension uses more memory
print(type(list_comp)) # Outputs: <class 'list'>
print(type(gen_exp)) # Outputs: <class 'generator'>Zastosowania generatorów
Zastosowania generatorów
Generatory doskonale nadają się do:
- przetwarzania dużych zbiorów danych, które nie mieszczą się w pamięci,
- generowania nieskończonych sekwencji,
- leniwego obliczania danych.
Nieskończone generatory
Nieskończone generatory
Generatory mogą tworzyć nieskończone sekwencje, na przykład nieskończony ciąg liczb. Należy pamiętać o zatrzymaniu pętli, aby zapobiec nieskończonemu wykonywaniu programu.
# Infinite generator example
def infinite_sequence():
num = 0
while True:
yield num
num += 1
# Using the infinite generator
for i in infinite_sequence():
if i > 5:
break
print(i) # Outputs: 0, 1, 2, 3, 4, 5Funkcje generatorowe z wieloma instrukcjami yield
Funkcje generatorowe z wieloma instrukcjami yield
Funkcje generatorowe mogą zawierać wiele instrukcji yield, co pozwala tworzyć złożone sekwencje:
# Multiple yields in a generator
def multi_yield():
yield "First"
yield "Second"
yield "Third"
for value in multi_yield():
print(value) # Outputs: First, Second, ThirdTypowe błędy związane z generatorami
Typowe błędy związane z generatorami
Oto błędy, których należy unikać:
- używanie
returnzamiastyieldw funkcji generatorowej, - niepobieranie elementów generatora za pomocą pętli lub
next(), - używanie generatorów dla małych zbiorów danych, dla których bardziej odpowiednie są listy.
Czego się nauczyliśmy?
Czego się nauczyliśmy?
W tej lekcji dowiedzieli się Państwo:
- czym są generatory i jak działają w Pythonie,
- jak używać
yielddo tworzenia funkcji generatorowych, - czym różnią się generatory od list,
- jakie są zastosowania generatorów, na przykład do tworzenia nieskończonych sekwencji i przetwarzania dużych zbiorów danych.
Świetna praca! Przejdźmy do następnego tematu.

Często zadawane pytania
Czy lekcja „Generatory” jest bezpłatna?
Tak — pełny tekst „Generatory” 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 „Generatory”?
Poznaj generatory i dowiedz się, jak wykorzystywać je do tworzenia iteratorów Ć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 2 z 5.
Ile czasu zajmuje lekcja „Generatory”?
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