Forskellen mellem Python Yield og Python Return

Udbytteregningen bruges til at definere generatorer i Python. Så inden vi kommer ind på, hvad præcist udbytte gør, skal vi først forstå begrebet generatorer. Generatorer har en betydelig rolle i Python, og hvis du er dybt inde i Python-programmering, er chancerne for, at du allerede har arbejdet med Python-generatorer. Generatorer bruges til at oprette iteratorer i Python, men med en anden tilgang.

En Python-generatorer er funktioner, der producerer en række sekvenser og kan pauses og genoptages dynamisk. Generatorer blev først tilføjet som en valgfri funktion i Python 2.2 og gjort standard i Python 2.3. Selvom de var kraftige nok, blev generatorfunktionerne markant forbedret i Python 2.5.

Da generatorer blev føjet tilbage i Python 2.2, introducerede det et nyt nøgleord “udbytte” til bagudkompatibilitet, som vi var nødt til at importere generatorer fra _future_-modulet for at bruge dem. Dette blev ændret i Python version 2.3, da generatorer blev standard, og det var ikke længere nødvendigt.

Udbytteregistreringen suspenderer udførelsen af ​​en funktion og sender en værdi tilbage til den, der ringer, mens gemt tilstand og senere genoptages, hvilket betyder, at hele generatoren selv stadig kan genoptages, når returværdien er opnået. En returerklæring afslutter udførelsen af ​​funktionen og sender en værdi tilbage til den, der ringer. Uden den returnerer din funktion intet. Lad os se godt på hvornår vi skal bruge udbytte og hvornår vi skal bruge afkast i Python for bedre at forstå forskellen mellem de to.

Hvad er Python Yield?

Udbytteregningen bruges i Python-generatorer til at erstatte returneringen af ​​en funktion til at sende en værdi tilbage til dens opkald uden at ødelægge lokale variabler. For bedre at forstå, hvilken rolle udbytteopgørelsen spiller i Python-programmering, skal du forstå, hvad generatorer er.

Generatorfunktioner produceres per definition ligesom almindelige funktioner, men indeholder en "udbytte" -sætning. Dette begynder med nøgleordet "udbytte", der specificerer det generatorobjekt, der skal returneres til den, der ringer. En generator er en speciel funktion i Python, der returnerer et generatorobjekt til den, der ringer, snarere end en dataværdi. Udbytteøgleordet har den unikke mulighed for at stoppe udførelsen af ​​funktionen, gemme tilstand og senere genoptage.

Hvad er Python Return?

Returopgørelsen, i modsætning til afkastopgørelsen, forlader en funktion og afleverer en værdi til den, der ringer. Funktioner returnerer en værdi tilbage til deres opkald, og dem, der er mere proceduremæssige, returnerer ikke eksplicit noget overhovedet. Mens en funktion kan have flere retursangivelser, kan kun en af ​​dem kaldes til en given påkaldelse af funktionen.

En returopgørelse vises typisk helt i slutningen af ​​en funktionsblok for at returnere det endelige resultat af at udføre alle udsagn indeholdt i den funktion. Det kan dog også vises tidligere i funktionsblokken for at stoppe udførelsen af ​​alle efterfølgende udsagn i den blok. Dette genoptager øjeblikkeligt udførelsen af ​​programmet hos den, der ringer. Når der ikke er angivet nogen værdi, er den ækvivalente returobjekttype i Python “Ingen”.

Forskellen mellem Python Yield og Return

  1. Grundlæggende relateret til Python Yield og Return

    • Udbytteregningen bruges i Python-generatorer til at erstatte returneringen af ​​en funktion til at sende en værdi tilbage til dens opkald uden at ødelægge lokale variabler. En generator er en speciel funktion i Python, der returnerer et generatorobjekt til den, der ringer, snarere end en dataværdi.
    • Returopgørelsen, i modsætning til afkastopgørelsen, forlader en funktion og afleverer en værdi til den, der ringer. En returopgørelse vises typisk helt i slutningen af ​​en funktionsblok for at returnere det endelige resultat af at udføre alle udsagn indeholdt i den funktion. Alle funktioner returnerer en værdi, og hvis der ikke er angivet nogen værdi, returnerer den “Ingen”.
  1. Generatorer vs. funktioner i Python Yield og Return

    • Udbytteopgørelsen bruges eksplicit sammen med Python-generatorer. Syntaktisk er en generator en funktion med en udbytteopgave. Mens en funktion kan have flere retursangivelser, kan kun en af ​​dem kaldes til en given påkaldelse af funktionen.
    • I modsætning til en funktion, der kun vender tilbage én gang, kan generatorer stoppe udførelsen og give mellemresultater. Hver generator er defineret som en funktion, men i stedet for returneringsnøgleordet bruges udbytte-nøgleord inde i funktionsblokken for at indikere, at returværdien kun er midlertidig, og at hele generatoren kan genoptages, selv efter at returnerværdien er opnået.
  1. Udførelse af Python Yield og Return

    • Return-erklæringen afslutter udførelsen af ​​en funktion og sender en værdi tilbage til den, der ringer. Funktioner returnerer en værdi tilbage til deres opkald, og dem, der er mere proceduremæssige, returnerer ikke eksplicit noget overhovedet. Hvad der dybest set gør er at tage udgang fra en funktion og ødelægge alle de lokale værdier inden for.
    • Udbytteregningen erstatter på den anden side returneringsværdien for en funktion for at suspendere dens udførelse og sender værdien tilbage til den, der ringer uden at ødelægge lokale variabler. I modsætning til returfunktionen genoptager udbyttet dog udførelsen af ​​funktionen, hvorfra den blev afbrudt.

Python Yield vs. Return: Sammenligningstabel

Oversigt over Python Yield og Return

Syntaktisk er udbytte et nøgleord, der kan bruges ligesom returnøgleordet, bortset fra at returneringsopgørelsen afslutter udførelsen af ​​din funktion og sender en værdi tilbage til dens opkalder. Funktionen af ​​returopgørelsen er at tage input og returnere noget til den, der ringer. I modsætning til et afkast bruges udbytteopgørelsen eksplicit til at definere generatorer, der erstatter returneringsværdien af ​​en funktion for at suspendere dens udførelse, idet de lokale variabler holdes intakte, mens returopgørelsen ødelægger alle de lokale variabler inden for.