Python je široko korišten opći programski jezik novijeg doba. Prinos je ugrađena ključna riječ Python koja se koristi za stvaranje funkcija generatora. Njegova funkcija generira niz rezultata. Pauzira izvršavanje programa, vraća vrijednost rezultata pozivatelju i nastavlja izvršenje od zadnjeg prinosa. Osim toga, funkcija yield generira niz rezultata u obliku generatorskog objekta. S druge strane, return je također ugrađena ključna riječ u Pythonu koja prekida funkciju i šalje vrijednost natrag pozivaču.
Ovaj članak s primjerima opisuje razlike između prinosa i prinosa.
Razlike između prinosa i povrata
Za početak postoje mnoge vidljive razlike između prinosa i prinosa. Prvo razgovarajmo o čemu se radi.
Povratak | Prinos |
---|---|
Izraz return pozivatelju vraća samo jednu vrijednost. | Izjava yield može pozivatelju vratiti niz rezultata u obliku generatorskog objekta. |
Povratak izlazi iz funkcije, a u slučaju petlje odbacuje petlju. To je posljednja izjava koja se postavlja unutar funkcije. | Ne ukida lokalne varijable funkcije. Obustavlja izvršenje i vraća vrijednost natrag pozivatelju i nastavlja izvršenje programa iz zadnjeg izraza prinosa. |
Logično, funkcija bi trebala imati samo izraz return. | Unutar funkcije može biti više od jednog izraza prinosa. |
Izjava o povratu može se pokrenuti samo jednom. | Izjava o prinosu može se izvoditi više puta. |
Naredba return smještena je unutar redovite Python funkcije. | Izjava yield pretvara redovnu funkciju u funkciju generatora. |
Primjer1: Povratak vs. Prinos
Pogledajmo sada razliku između naredbi return i yield kroz primjere. U donjem primjeru programa koristili smo više naredbi za povratak. Možete primijetiti da će se izvršavanje programa završiti nakon prve naredbe za povratak, a ostatak koda neće biti izvršen.
#a program za prikaz rada povratne izjave#definiranje varijable broja
broj1 = 10
#definiranje varijable broja
broj2 = 20
#kreiranje funkcije za izvođenje aritmetičkih operacija
def mathOP ():
# izračunavanje vrijednosti zbroja
povratak num1 + num2
# izračunavanje razlike
povratak num1-num2
# izračunavanje vrijednosti množenja
povratak num1 * num2
# izračunavanje vrijednosti podjele
povratak num1 / num2
#pozivanje funkcije
ispis (mathOP ())
Izlaz
U izlazu se može vidjeti da funkcija vraća samo prvu vrijednost, a program se prekida.
Da bismo izvršili sličan zadatak s višestrukim naredbama return, moramo stvoriti četiri različite funkcije za svaku vrstu aritmetičke operacije.
#a program za prikaz rada povratne izjave#definiranje varijable broja
broj1 = 10
#definiranje varijable broja
broj2 = 20
#kreiranje funkcije za izvođenje aritmetičkih operacija
def sumOP ():
# izračunavanje vrijednosti zbroja
povratak num1 + num2
def oduzmiOP ():
# izračunavanje razlike
povratak num1-num2
def multiplicationOP ():
# izračunavanje vrijednosti množenja
povratak num1 * num2
def divisionOP ():
# izračunavanje vrijednosti podjele
povratak num1 / num2
#pozivanje funkcije zbroja
print ("Vrijednost zbroja je:", sumOP ())
#pozivanje funkcije oduzimanja
print ("Vrijednost razlike je:", oduzmiOP ())
#pozivanje funkcije množenja
print ("Vrijednost množenja je:", multiplicationOP ())
#pozivanje funkcije dijeljenja
print ("Vrijednost podjele je:", divisionOP ())
Izlaz
Te višestruke aritmetičke operacije možemo izvoditi unutar jedne funkcije generatora s više izjava o prinosu.
#a program za prikaz rada izvještaja o prinosu#definiranje varijable broja
broj1 = 10
#definiranje varijable broja
broj2 = 20
#kreiranje funkcije za izvođenje aritmetičkih operacija
def mathOP ():
# izračunavanje vrijednosti zbroja
prinos num1 + num2
# izračunavanje razlike
prinos num1-num2
# izračunavanje vrijednosti množenja
prinos num1 * num2
# izračunavanje vrijednosti podjele
prinos num1 / num2
#pozivanje funkcije
print ("Ispis vrijednosti:")
#use for petlja za pristup vrijednostima iz objekta generatora
za i u mathOP ():
ispis (i)
Izlaz
Primjer2: Povratak vs. Prinos
Pogledajmo još jedan primjer izjava o povratu i prinosu. U danom primjeru imamo popis brojeva koji se prosljeđuje funkciji mod () kao argument. Izvodimo operaciju modula na svakom broju popisa i provjeravamo koji su to brojevi kada se podijeli s 10, vraća nulu kao ostatak vrijednosti.
Prvo, implementirajmo ovaj primjer u našu Python skriptu s return naredbom.
#definiranje popisa brojevamyList = [10,20,25,30,35,40,50]
#definiranje funkcije za izvođenje operacije modula
def mod (moj popis):
jer sam na svom popisu:
#izvođenje modula
ako (i% 10 == 0):
povratak i
ispis (mod (myList))
Izlaz
Izraz return samo pozivatelju vraća prvi broj i prekida izvršavanje funkcije.
Sad, implementirajmo isti primjer u našu Python skriptu s naredbom yield.
#definiranje popisa brojevamyList = [10,20,25,30,35,40,50]
#definiranje funkcije za izvođenje operacije modula
def mod (moj popis):
jer sam na svom popisu:
#izvođenje modula
ako (i% 10 == 0):
#izjava o prinosu
prinos i
za i u modu (myList):
ispis (i)
Izlaz
Zaključak
Zaključno, povrat i prinos dvije su ugrađene Python ključne riječi ili izjave. Naredba return koristi se za vraćanje vrijednosti pozivatelju iz funkcije i završava izvršavanje programa, dok naredba yield generira objekt i pozivatelju može vratiti više vrijednosti bez prekida izvršenja programa. Ovaj članak s primjerima navodi sve vidljive razlike između izjava o prinosu i prinosu.