Yield je ugrađena Python ključna riječ koja vraća vrijednosti iz funkcije. Izvođenje funkcije nije prekinuto. Dapače, vraća vrijednost pozivatelju i održava stanje izvođenja funkcije. Izvršenje funkcije nastavlja se iz posljednje izjave o prinosu. Prinos nam omogućuje da proizvedemo niz vrijednosti, a ne jednu vrijednost. Koristi se unutar tijela funkcije. Funkcija koja sadrži izjavu o prinosu poznata je kao funkcija generatora.
Dobivanje ključne riječi ima nekoliko prednosti. Na primjer, kontrolira dodjelu memorije i sprema stanje lokalne varijable. Međutim, to povećava složenost koda.
Ovaj članak objašnjava primjere ključne riječi yield s primjerima.
Sintaksa prinosa
Sintaksa prinosa je jednostavna i jasna. Prinos se započinje ključnom riječi yield i sintaksom na sljedeći način:
prinosvrijednost
Primjeri
Pogledajmo sada primjere za razumijevanje uporabe i rada izjava o prinosu. Tradicionalno, ključna riječ return završava izvršavanje programa i vraća vrijednost na kraju, dok yield vraća niz vrijednosti. Ne pohranjuje vrijednost u memoriju i vraća vrijednost pozivatelju tijekom izvođenja. U dolje navedenom primjeru definirana je funkcija generatora za određivanje prijestupne godine. Skok je ona godina kada je djeljivo s četiri vrati nulu kao ostatak. Ključna riječ yield vraća vrijednost prijestupne godine pozivatelju. Kako će dobiti vrijednost prijestupne godine, pauzirat će izvršenje programa, vratiti vrijednost, a zatim nastaviti izvođenje s mjesta na kojem je zaustavljeno.
#deklariranje generatora za određivanje prijestupne godinedefleapfunc(moj_popis):
zaiumoj_popis:
ako(i%4==0):
#korištenje prinosa
prinosi
#odjavljivanje popisa godina
popis_godine=[2010. godine,2011. godine,2012,2016,2020. godine,2024. godine]
ispisati('Ispis vrijednosti prijestupne godine')
zaxuleapfunc(popis_godine):
ispisati(x)
Izlaz
Rezultat prikazuje niz prijestupnih godina.
Pogledajmo još jedan primjer gdje funkcija generatora daje različite brojeve i nizove.
#deklariranje funkcije generatoradefmyfunc():
prinos 'Ocjena'
prinos 'Ivan'
prinos 'Taylor'
prinos 'Ivan'
prinos 10
prinos dvadeset
prinos 30
prinos 40
prinos pedeset
#pozivanje i ponavljanje kroz funkciju generatora
zaiumyfunc():
#vrijednosti ispisa
ispisati(i)
Izlaz
Implementirajmo funkciju generatora za izračunavanje i ispis kocke vrijednosti niza brojeva. Generiramo vrijednosti kocke od 1 do 30.
#deklariranje funkcije generatora za izračunavanje vrijednosti kockedefračunaj():
sati=1
#beskonačna while petlja
dok Pravi:
#računavajuća kocka
prinosval * val * val
#povećanje vrijednosti za 1
sati=val +1
ispisati('Vrijednosti kocke su:')
#pozivanje funkcije generatora
zaiuračunaj():
akoi>30:
pauza
ispisati(i)
Izlaz
Izlaz prikazuje vrijednost kocke manje od 30.
Zaključak
Yield je ugrađena ključna riječ Python koja ne prekida izvršenje programa i generira niz vrijednosti. U usporedbi s ključnom riječi return, ključna riječ yield proizvodi više vrijednosti i vraća se pozivatelju. Ovaj članak objašnjava primjere Python Yielda.