Donos Pythona

Python Yield



Donos je vgrajena ključna beseda Python, ki vrne vrednosti iz funkcije. Izvajanje funkcije se ne ustavi. Namesto tega klicatelju vrne vrednost in ohrani stanje izvajanja funkcije. Izvajanje funkcije se nadaljuje iz zadnje izjave o donosu. Donos nam omogoča izdelavo zaporedja vrednosti in ne ene vrednosti. Uporablja se v telesu funkcije. Funkcija, ki vsebuje izjavo o izkoristku, je znana kot funkcija generatorja.







Ključna beseda ima več prednosti. Na primer, nadzoruje dodelitev pomnilnika in shranjuje stanje lokalne spremenljivke. Vendar pa povečuje zapletenost kode.



Ta članek razlaga uporabo ključne besede yield s primeri.



Sintaksa pridelka

Sintaksa donosa je preprosta in jasna. Donos se začne s ključno besedo yield in sintakso, kot sledi:





donosvrednost

Primeri

Zdaj pa poglejmo primere za razumevanje uporabe in dela izjav o donosu. Tradicionalno ključna beseda return konča izvajanje programa in na koncu vrne vrednost, medtem ko yield vrne zaporedje vrednosti. Vrednosti ne shrani v pomnilnik in vrednost vrne klicatelju med izvajanjem. V spodnjem primeru je definirana funkcija generatorja za določitev prestopnega leta. Preskok je tisto leto, ko deljeno s štiri vrne nič kot ostanek. Ključna beseda yield klicatelju vrne vrednost prestopnega leta. Ker bo dobil vrednost prestopnega leta, bo začasno ustavil izvajanje programa, vrnil vrednost in nato nadaljeval izvajanje od tam, kjer je bil ustavljen.

#deklariranje generatorja za določitev prestopnega leta
defleapfunc(moj_list):
zajazvmoj_list:
če(jaz%4==0):
#poraba donosa
donosjaz
#odločanje o seznamu let
letnik_list=[2010,2011,2012,2016,2020,2024]
tiskanje('Tiskanje vrednosti prestopnega leta')
zaxvleapfunc(letnik_list):
tiskanje(x)

Izhod



Rezultat prikazuje niz prestopnih let.

Poglejmo še en primer, kjer funkcija generatorja daje različna števila in nize.

#deklariranje funkcije generatorja
defmyfunc():
donos 'Mark'
donos 'Janez'
donos 'Taylor'
donos 'Ivan'
donos 10
donos dvajset
donos 30
donos 40
donos petdeset
#klicanje in ponavljanje prek funkcije generatorja
zajazvmyfunc():
#tiskalne vrednosti
tiskanje(jaz)

Izhod

Izvedimo funkcijo generatorja za izračun in tiskanje kocke vrednosti zaporedja števil. Ustvarjamo vrednosti kocke od 1 do 30.

#deklariranje funkcije generatorja za izračun vrednosti kocke
defizračunaj():
ure=1
#neskončna zanka while
medtem Prav:
#računska kocka
donosval * val * val
#povečanje vrednosti za 1
ure=val +1
tiskanje('Vrednosti kocke so:')
#klicanje funkcije generatorja
zajazvizračunaj():
čejaz>30:
prekiniti
tiskanje(jaz)

Izhod

Izhod prikazuje vrednost kocke manj kot 30.

Zaključek

Donos je ključna beseda, vgrajena v Python, ki ne prekine izvajanja programa in ne ustvari niza vrednosti. V primerjavi s ključno besedo return ključna beseda yield ustvari več vrednosti in se vrne klicatelju. Ta članek s primeri razlaga Python Yield.