Yield je vgrajena ključna beseda Python, ki vrne vrednosti iz funkcije. Izvedba funkcije se ne zaključi. Namesto tega vrne vrednost klicatelju in vzdržuje stanje izvajanja funkcije. Izvajanje funkcije se nadaljuje z zadnjim izpisom donosa. Donos nam omogoča, da dobimo zaporedje vrednosti namesto ene vrednosti. Uporablja se znotraj funkcionalnega telesa. Funkcija, ki vsebuje izjavo o donosu, je znana kot funkcija generatorja.
Ključna beseda yield ima več prednosti. Na primer, nadzoruje dodelitev pomnilnika in shrani stanje lokalne spremenljivke. Vendar povečuje zapletenost kode.
Ta članek s primeri pojasnjuje uporabo ključne besede yield.
Sintaksa donosa
Sintaksa donosnosti je preprosta in enostavna. Donos se začne s ključno besedo yield in sintakso, kot sledi:
vrednost donosaPrimeri
Zdaj pa si oglejmo primere za razumevanje uporabe in del izjav o donosih. Ključna beseda return tradicionalno zaključi izvajanje programa in na koncu vrne vrednost, medtem ko yield vrne zaporedje vrednosti. Vrednosti ne shrani v pomnilnik in jo med izvajanjem vrne klicatelju. V spodnjem primeru je definirana funkcija generatorja za določanje prestopnega leta. Preskok je tisto leto, ko je deljivo s štirimi vrne nič kot preostanek. Ključna beseda yield klicatelju vrne vrednost prestopnega leta. Ko bo dobil vrednost prestopnega leta, bo zaustavil izvajanje programa, vrnil vrednost in nato nadaljeval izvajanje od tam, kjer je bilo ustavljeno.
#declaring generator za določitev prestopnega letadef leapfunc (moj_list):
za i na my_list:
če (i% 4 == 0):
#uporaba donosa
donos i
#declaring seznam let
year_list = [2010,2011,2012,2016,2020,2024]
print ("Tiskanje vrednosti prestopnega leta")
za x v leapfunc (seznam_ let):
natisni (x)
Izhod
Rezultat prikazuje vrsto prestopnih let.
Poglejmo še en primer, kjer funkcija generatorja daje različna števila in nize.
#declaring generator funkcijedef myfunc ():
donos "Oznaka"
donos "John"
donos "Taylor"
donos "Ivan"
donos 10
donos 20
donos 30
donos 40
donos 50
#calling in iterating skozi funkcijo generatorja
za i v myfunc ():
#printing vrednosti
natisni (i)
Izhod
Izvedimo funkcijo generatorja za izračun in izpis kocke vrednosti zaporedja števil. Ustvarjamo vrednosti kocke od 1 do 30.
#declaring generator funkcije za izračun vrednosti kockedef calcube ():
val = 1
# neskončna zanka while
medtem ko je True:
#kalkulirajoča kocka
donos val * val * val
#povečanje vrednosti za 1
val = val + 1
print ("Vrednosti kocke so:")
#calling generator generator
za i v calcube ():
če je> 30:
odmor
natisni (i)
Izhod
Izhod prikazuje vrednost kocke, manjšo od 30.
Zaključek
Yield je vgrajena ključna beseda Python, ki ne konča izvajanja programa in ustvari vrsto vrednosti. Ključna beseda yield v primerjavi s ključno besedo return ustvari več vrednosti in se vrne klicatelju. Ta članek s primeri pojasnjuje Python Yield.