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.
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.
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”.
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.