Generatory
Poznaj generatory i ich zastosowanie do tworzenia iteratorów.
Generatory to bezpłatna lekcja Learn AI with Python 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 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 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 udostępniają 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 do zwracania wartości pojedynczo. Każde wywołanie metody next() generatora wznawia wykonywanie 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 zachowują stan funkcji, dzięki czemu mogą wznowić wykonywanie 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 są podobne do składowanych list, ale zamiast nawiasów kwadratowych używają nawiasów okrągłych. Tworzą generatory zamiast list.
# 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 są bardziej wydajne pod względem pamięci 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 idealnie nadają się do:
- Przetwarzania dużych zbiorów danych, które nie mieszczą się w pamięci.
- Generowania nieskończonych sekwencji.
- Leniwej ewaluacji danych.
Nieskończone generatory
Nieskończone generatory
Generatory mogą tworzyć nieskończone sekwencje, na przykład niekończącą się sekwencję liczb. Należy pamiętać o zatrzymaniu pętli, aby zapobiec nieskończonemu wykonywaniu.
# 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 generatorów z wieloma instrukcjami yield
Funkcje generatorów z wieloma instrukcjami yield
Funkcje generatorów mogą zawierać wiele instrukcji yield, co umożliwia tworzenie złożonych sekwencji:
# 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 dotyczące generatorów
Typowe błędy dotyczące generatorów
Oto kilka błędów, których należy unikać:
- Używanie
returnzamiastyieldw funkcji generatora. - Niepobieranie elementów z generatora za pomocą pętli lub
next(). - Używanie generatorów dla małych zbiorów danych, w przypadku których bardziej odpowiednie są listy.
Czego się nauczyliśmy?
Czego się nauczyliśmy?
W tej lekcji nauczyli się Państwo:
- Czym są generatory i jak działają w Pythonie.
- Jak używać
yielddo tworzenia funkcji generatorów. - Czym generatory różnią się od list.
- Jakie są zastosowania generatorów, np. w przypadku nieskończonych sekwencji i dużych zbiorów danych.
Świetnie! 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 Learn AI with Python, przejdź na CoddyKit PRO. Kurs Learn AI with Python zawiera 5 lekcji w sumie.
Co nauczysz się w „Generatory”?
Poznaj generatory i ich zastosowanie do tworzenia iteratorów. Ć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 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 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
- Dekoratory
- Generatory
- Menedżery kontekstu (instrukcje with)
- Wyrażenia składane (listy, zbiory i słowniki)
- Iteratory i obiekty iterowalne