Razlika između prinosa Pythona i povratka Pythona

Izjava yield koristi se za definiranje generatora u Pythonu. Dakle, prije nego što uđemo u to što točno donosi prinos, prvo moramo razumjeti koncept generatora. Generatori imaju značajnu ulogu u Pythonu, a ako ste duboko u Python programiranju, velika je vjerojatnost da ste već radili s Python generatorima. Generatori se koriste za stvaranje iteratora u Pythonu, ali s drugačijim pristupom.

Python generatori su funkcije koje proizvode slijed rezultata i mogu se dinamički pauzirati i nastaviti. Generatori su prvi put dodani kao neobavezna značajka u Python 2.2, a standardni su u Python 2.3. Iako su bili dovoljno snažni, funkcije generatora značajno su poboljšane u Pythonu 2.5.



Kada su generatori dodani natrag u Python 2.2, uveo je novu ključnu riječ “yield” za povratnu kompatibilnost, za koju smo morali uvesti generatore iz modula _future_ da bismo ih koristili. To je promijenjeno u verziji Python 2.3 kada su generatori postali standardni i više nije bilo potrebno.

Izjava yield obustavlja izvršavanje funkcije i vraća vrijednost natrag pozivatelju, dok štedi stanje i kasnije nastavlja što znači cijelu generator sam se i dalje može nastaviti nakon dobivanja povratne vrijednosti. Izraz return završava izvršavanje funkcije i vraća vrijednost pozivatelju. Bez nje vaša funkcija ne vraća ništa. Pogledajmo dobro kada koristiti yield, a kada return u Pythonu kako bismo bolje razumjeli razliku između njih dvoje.



Što je prinos Pythona?

Izjava yield koristi se u Python generatorima da nadomjesti povratak funkcije za slanje vrijednosti natrag pozivatelju bez uništavanja lokalnih varijabli. Da biste bolje razumjeli ulogu koju izjava yield ima u programiranju na Pythonu, morate razumjeti što su generatori.

Funkcije generatora proizvode se prema definiciji baš kao i uobičajene funkcije, ali sadrže izjavu o 'prinosu'. To započinje s ključnom riječi 'yield' koja određuje objekt generatora koji se vraća pozivatelju. Generator je posebna funkcija u Pythonu koja pozivatelju vraća objekt generatora, a ne vrijednost podataka. Ključna riječ yield ima jedinstvenu sposobnost zaustavljanja izvršavanja funkcije, spremanja stanja i kasnijeg nastavka.



Što je Python Return?

Izraz return, za razliku od naredbe yield, izlazi iz funkcije, vraćajući vrijednost pozivatelju. Funkcije vraćaju vrijednost svojim pozivima, a one proceduralnije prirode uopće ne vraćaju ništa. Iako funkcija može imati više naredbi za povratak, samo se jedan od njih može pozvati za bilo koji zadani poziv funkcije.

Tipično se naredba return pojavljuje na samom kraju funkcije blok vratiti konačni rezultat izvršavanja svih izjava sadržanih u toj funkciji. Međutim, može se pojaviti i ranije u funkcijskom bloku da zaustavi izvršavanje svih sljedećih izraza u tom bloku. Ovo odmah nastavlja izvršavanje programa kod pozivatelja. Kada nije navedena vrijednost, ekvivalentna vrsta povratnog objekta u Pythonu je 'None'.

Razlika između prinosa i povratka Pythona

  1. Osnove povezane s prinosom i povratkom Pythona

    • Izjava yield koristi se u Python generatorima da nadomjesti povratak funkcije za slanje vrijednosti natrag pozivatelju bez uništavanja lokalnih varijabli. Generator je posebna funkcija u Pythonu koja pozivatelju vraća objekt generatora, a ne vrijednost podataka.
    • Izraz return, za razliku od naredbe yield, izlazi iz funkcije, vraćajući vrijednost pozivatelju. Tipično se naredba return pojavljuje na samom kraju funkcijskog bloka da bi vratila konačni rezultat izvršavanja svih izraza sadržanih u toj funkciji. Sve funkcije vraćaju vrijednost, a ako nije navedena vrijednost, vratit će 'None'.
  1. Generatori nasuprot funkcijama u prinosu i povratu Pythona

    • Izjava yield se eksplicitno koristi s Python generatorima. Sintaksički, generator je funkcija s izjavom o prinosu. Iako funkcija može imati više naredbi za povratak, samo se jedan od njih može pozvati za bilo koji zadani poziv funkcije.
    • Za razliku od funkcije koja se vraća samo jednom, generatori mogu zaustaviti izvršavanje i dati srednje rezultate. Svaki je generator definiran kao funkcija, ali umjesto ključne riječi return, ključna riječ yield koristi se unutar funkcijskog bloka da označi da je povratna vrijednost samo privremena i da se cijeli generator može nastaviti čak i nakon što se dobije povratna vrijednost.
  1. Izvršenje prinosa i povratka Pythona

    • Izraz return završava izvršavanje funkcije i vraća vrijednost pozivatelju. Funkcije vraćaju vrijednost svojim pozivima, a one proceduralnije prirode uopće ne vraćaju ništa. U osnovi je izlazak iz funkcije i uništavanje svih lokalnih vrijednosti unutar.
    • Izjava yield, s druge strane, zamjenjuje povratnu vrijednost funkcije kako bi obustavila njezino izvršavanje i vraća vrijednost pozivatelju bez uništavanja lokalnih varijabli. Međutim, za razliku od funkcije povrat, yield nastavlja izvršavanje funkcije od mjesta na kojem je zaustavljena.

Prinos Pythona nasuprot povratka: Tabela usporedbe



Sažetak Prinos i povratak Pythona

Sintaktički, yield je ključna riječ koja se može koristiti baš kao i ključna riječ return, osim što naredba return prekida izvršavanje vaše funkcije i vraća natrag vrijednost pozivatelju. Funkcionalnost povratne izjave je da uzima ulaze i vraća nešto pozivatelju. Za razliku od povratka, naredba yield se izričito koristi za definiranje generatora, zamjenjujući povratnu vrijednost funkcije kako bi se obustavilo njezino izvršavanje zadržavajući lokalno varijable netaknut, dok naredba return uništava sve lokalne varijable unutar.