Yield
w Pythonie jest kluczowym słowem używanym w definicji generatora, który pozwala funkcji zwracać sekwencję wartości w czasie, zamiast jednorazowego zwracania pojedynczej wartości. Użycie yield
sprawia, że funkcja staje się generatorem, co może być szczególnie przydatne przy przetwarzaniu dużych zbiorów danych lub realizacji operacji, które wymagają zachowania stanu pomiędzy kolejnymi wywołaniami. W tym artykule przyjrzymy się, jak można skutecznie wykorzystać yield
na konkretnym przykładzie.
Przykład użycia yield
Załóżmy, że chcemy stworzyć generator, który będzie iterować przez liczby parzyste od zadanego punktu startowego. Pokażemy, jak zdefiniować taki generator, wykorzystując yield
do zwracania kolejnych liczb parzystych.
def even_numbers_generator(start=0):
# Zaczynamy od najbliższej liczby parzystej
# większej lub równej 'start'
number = start + (start % 2)
while True: # Nieskończona pętla generująca liczby parzyste
yield number # Zwraca kolejną liczbę parzystą
number += 2 # Przechodzi do następnej liczby parzystej
# Użycie generatora
for even_number in even_numbers_generator(10):
print(even_number) # Wyświetla liczby parzyste zaczynając od 10
if even_number > 20: # Warunek stopu, aby uniknąć nieskończonej pętli
break
W tym kodzie, funkcja even_numbers_generator
jest generatorem licz parzystych, zaczynając od podanej wartości start
. Użycie yield
pozwala na “pauzowanie” funkcji i zwracanie kolejnej liczby parzystej za każdym razem, gdy generator jest wywoływany. To podejście jest szczególnie użyteczne, gdy pracujemy z potencjalnie nieskończonymi sekwencjami danych, ponieważ pozwala na kontrolowanie przepływu danych i zapobiega konieczności przechowywania całej sekwencji w pamięci.
Podsumowanie
Yield
jest potężnym narzędziem w Pythonie, które umożliwia tworzenie generatorów – funkcji, które zwracają sekwencję wartości jedna po drugiej, zamiast wszystkich naraz. Dzięki yield
, możemy efektywnie przetwarzać duże zbiory danych, ograniczać zużycie pamięci i ułatwić sobie pracę z sekwencjami, które mogą być nieskończone lub bardzo długie. Jak pokazano na przykładzie, yield
umożliwia łatwe i elastyczne generowanie wartości na żądanie, co sprawia, że jest to niezbędne narzędzie dla każdego programisty Pythona, szczególnie tych zajmujących się przetwarzaniem danych.
Jeżeli chcesz przyśpieszyć swoją naukę tworzenia stron chciałbym polecić mój kurs video Python w którym nauczysz się tego języka od podstaw do zaawansowanych jego aspektów.