Instrukcja fed służy do definiowania generatorów w Pythonie. Dlatego zanim przejdziemy do tego, co dokładnie daje wydajność, musimy najpierw zrozumieć pojęcie generatorów. Generatory odgrywają znaczącą rolę w Pythonie, a jeśli jesteś głęboko zaangażowany w programowanie w Pythonie, istnieje prawdopodobieństwo, że już pracowałeś z generatorami Python. Generatory są używane do tworzenia iteratorów w Pythonie, ale z innym podejściem.
Generatory Pythona to funkcje, które generują sekwencję wyników i mogą być dynamicznie wstrzymywane i wznawiane. Generatory zostały najpierw dodane jako opcjonalna funkcja w Pythonie 2.2 i stały się standardem w Pythonie 2.3. Mimo że były wystarczająco mocne, funkcje generatorów zostały znacznie ulepszone w Pythonie 2.5.
Kiedy generatory zostały dodane z powrotem w Pythonie 2.2, wprowadzono nowe słowo kluczowe „wydajność” w celu zapewnienia kompatybilności wstecznej, dla którego musieliśmy zaimportować generatory z modułu _future_, aby z nich skorzystać. Zostało to zmienione w Pythonie w wersji 2.3, gdy generatory stały się standardem i nie było już konieczne.
Instrukcja fed zawiesza wykonywanie funkcji i wysyła wartość z powrotem do programu wywołującego, a jednocześnie zapisuje stan, a następnie wznawia, co oznacza, że cały generator może zostać wznowiony po uzyskaniu wartości zwracanej. Instrukcja return kończy wykonywanie funkcji i wysyła wartość z powrotem do programu wywołującego. Bez tego twoja funkcja nic nie zwraca. Przyjrzyjmy się, kiedy należy użyć plonu, a kiedy return w Pythonie, aby lepiej zrozumieć różnicę między nimi.
Instrukcja fed jest używana w generatorach Pythona w celu zastąpienia zwrotu funkcji wysyłającej wartość z powrotem do jej obiektu wywołującego bez niszczenia zmiennych lokalnych. Aby lepiej zrozumieć rolę, jaką odgrywa instrukcja return w programowaniu w języku Python, musisz zrozumieć, jakie są generatory.
Funkcje generatora są tworzone z definicji, podobnie jak funkcje zwykłe, ale zawierają instrukcję „fed”. Zaczyna się to od słowa kluczowego „wydajność”, które określa obiekt generatora, który ma zostać zwrócony dzwoniącemu. Generator to specjalna funkcja w Pythonie, która zwraca obiekt generujący wywołującemu, a nie wartość danych. Słowo kluczowe fed ma unikalną możliwość zatrzymania wykonywania funkcji, zapisania stanu i późniejszego wznowienia.
Instrukcja return, w przeciwieństwie do instrukcji return, wychodzi z funkcji i przekazuje wartość do swojego obiektu wywołującego. Funkcje zwracają wartość swoim rozmówcom, a te, które mają charakter proceduralny, w ogóle niczego nie zwracają. Chociaż funkcja może mieć wiele instrukcji return, tylko jedna z nich może być wywołana dla dowolnego wywołania funkcji.
Zazwyczaj instrukcja return pojawia się na samym końcu bloku funkcji, aby zwrócić końcowy wynik wykonania wszystkich instrukcji zawartych w tej funkcji. Może się jednak pojawić wcześniej w bloku funkcyjnym, aby zatrzymać wykonywanie wszystkich kolejnych instrukcji w tym bloku. To natychmiast wznawia wykonywanie programu przez program wywołujący. Jeśli nie określono żadnej wartości, równoważnym typem zwracanego obiektu w Pythonie jest „Brak”.
Składniowo, fed jest słowem kluczowym, którego można używać tak jak słowa kluczowego return, z tym wyjątkiem, że instrukcja return przerywa wykonywanie funkcji i odsyła wartość do swojego obiektu wywołującego. Funkcjonalność instrukcji return polega na pobieraniu danych wejściowych i zwracaniu czegoś dzwoniącemu. W przeciwieństwie do return, instrukcja return jest jawnie używana do definiowania generatorów, zastępując wartość zwracaną przez funkcję w celu zawieszenia jej wykonywania, utrzymując zmienne lokalne w stanie nienaruszonym, podczas gdy instrukcja return niszczy wszystkie zmienne lokalne w obrębie.