Saagikusavaldust kasutatakse Pythonis generaatorite määratlemiseks. Nii et enne, kui saame uurida, mida täpselt saak annab, peame kõigepealt mõistma generaatorite mõistet. Generaatoritel on Pythonis oluline roll ja kui olete Pythoni programmeerimisse põhjalikult tegelenud, on tõenäoline, et olete Pythoni generaatoritega juba koostööd teinud. Generaatoreid kasutatakse iteraatorite loomiseks Pythonis, kuid erineva lähenemisviisiga.

Pythoni generaatorid on funktsioonid, mis annavad tulemuste jada ning mida saab peatada ja dünaamiliselt jätkata. Generaatorid lisati esmalt valikulise funktsioonina Python 2.2 ja muudeti standardiks Python 2.3-s. Kuigi generaatorite funktsioonid olid piisavalt võimsad, parandati neid Python 2.5-s märkimisväärselt.

Kui generaatorid lisati tagasi Python 2.2-sse, tõi see tagasiühilduvuse jaoks kasutusele uue märksõna “tootlus”, mille jaoks pidime generaatorid nende kasutamiseks importima moodulist _future_. Seda muudeti Pythoni versioonis 2.3, kui generaatorid said standardiks ja see polnud enam vajalik.

Saagikusavaldus peatab funktsiooni täitmise ja saadab väärtuse tagasi helistajale, samal ajal kui olekut salvestatakse ja hiljem jätkatakse, mis tähendab, et kogu generaatori enda tööd saab pärast tagastatava väärtuse saamist ikkagi jätkata. Tagastamise avaldus lõpetab funktsiooni täitmise ja saadab väärtuse helistajale tagasi. Ilma selleta ei anna teie funktsioon midagi tagasi. Vaatame lähemalt, millal kasutada saagikust ja millal kasutada tulu Pythonis, et nende kahe erinevust paremini mõista.

Mis on Pythoni saagikus?

Saagikusertifikaati kasutatakse Pythoni generaatorites funktsiooni tagastamise asendamiseks, et saata väärtus helistajale tagasi ilma kohalikke muutujaid hävitamata. Et paremini mõista, millist rolli tootlusavaldus Pythoni programmeerimisel mängib, peate mõistma, millised on generaatorid.

Generaatori funktsioone toodetakse määratluse järgi nagu tavalisi funktsioone, kuid need sisaldavad väljastust "saagis". See algab märksõnaga "saagikus", mis täpsustab helistajale tagastatava generaatoriobjekti. Generaator on Pythoni erifunktsioon, mis tagastab helistajale generaatoriobjekti, mitte andmeväärtuse. Saagise märksõnal on ainulaadne võime funktsiooni täitmist peatada, salvestada olekut ja hiljem jätkata.

Mis on Python Return?

Tagastamisteade väljub funktsioonist erinevalt tootluse teatisest, andes väärtuse helistajale tagasi. Funktsioonid tagastavad helistajatele väärtuse ja protseduurilisema iseloomuga asjad ei tagasta otseselt midagi. Kuigi funktsioonil võib olla mitu tagasitulekut, saab funktsiooni kutsumise korral kutsuda ainult ühe neist.

Tavaliselt ilmub tagastamisavaldus funktsiooniploki lõppu, et tagastada kõigi selles funktsioonis sisalduvate avalduste täitmise lõpptulemus. Siiski võib funktsiooniplokis ilmneda ka varem, et peatada kõigi selle ploki järgmiste avalduste täitmine. See jätkub kohe helistaja juures programmi täitmisega. Kui väärtust ei täpsustata, on Pythoni samaväärne tagastamisobjekti tüüp „Puudub”.

Pythoni saagise ja tagastamise erinevus

  1. Pythoni saagikuse ja tagasitulekuga seotud põhitõed
  • Saagikusertifikaati kasutatakse Pythoni generaatorites funktsiooni tagastamise asendamiseks, et saata väärtus helistajale tagasi ilma kohalikke muutujaid hävitamata. Generaator on Pythoni erifunktsioon, mis tagastab helistajale generaatoriobjekti, mitte andmeväärtuse. Tagastamisteade väljub funktsioonist erinevalt tootluse teatisest, andes väärtuse helistajale tagasi. Tavaliselt ilmub tagastamisavaldus funktsiooniploki lõppu, et tagastada kõigi selles funktsioonis sisalduvate avalduste täitmise lõpptulemus. Kõik funktsioonid tagastavad väärtuse ja kui väärtust pole määratud, tagastab väärtus “Puudub”.
  1. Generaatorid vs Pythoni saagise ja tagastamise funktsioonid
  • Saagikusavaldust kasutatakse otsesõnu Pythoni generaatoritega. Süntaktiliselt on generaator funktsioon saagisega. Kuigi funktsioonil võib olla mitu tagasitulekut, saab funktsiooni kutsumise korral kutsuda ainult ühe neist. Erinevalt funktsioonist, mis naaseb ainult üks kord, võivad generaatorid täitmise peatada ja anda vahetulemusi. Iga generaator on määratletud funktsioonina, kuid tagastamise märksõna asemel kasutatakse funktsiooniplokis tootluse märksõna, mis näitab, et tagastatav väärtus on ainult ajutine ja kogu generaatori saab jätkata ka pärast tagastamisväärtuse saamist.
  1. Pythoni saagise täitmine ja tagastamine
  • Tagastamisavaldus lõpetab funktsiooni täitmise ja saadab väärtuse tagasi helistajale. Funktsioonid tagastavad helistajatele väärtuse ja protseduurilisema iseloomuga asjad ei tagasta otseselt midagi. Põhimõtteliselt on see funktsioonist väljumine ja kõigi selles sisalduvate kohalike väärtuste hävitamine. Saagikuseisund seevastu asendab funktsiooni tagastamise väärtuse, et peatada selle täitmine, ja saadab väärtuse tagasi helistajale, hävitamata kohalikke muutujaid. Erinevalt tagastamisfunktsioonist jätkub saagis funktsiooni täitmist sealt, kus see pooleli jäeti.

Pythoni saagis vs tagasitulek: võrdlusdiagramm

Pythoni saagikuse ja tootluse kokkuvõte

Süntaktiliselt on saagikus märksõna, mida saab kasutada samamoodi nagu tagasisõna, välja arvatud juhul, kui tagastamisavaldus lõpetab teie funktsiooni täitmise ja saadab helistajale tagasi väärtuse. Tagastamise avalduse funktsioon on sisendite kogumine ja helistajale midagi tagastada. Erinevalt tagastamisest kasutatakse tootlusavaldust generaatorite määratlemiseks, asendades funktsiooni tagastusväärtuse, et peatada selle täitmine, hoides kohalikud muutujad puutumata, samas kui tagastamisavaldus hävitab kõik selles sisalduvad kohalikud muutujad.

Viited

  • Nguyen, Quan. Samaaegne valdamine Pythonis. Birmingham: Packt Publishing, 2018. Trükk
  • Philllips, tolmune. Python 3 objektorienteeritud programmeerimine. Birmingham: Packt Publishing, 2018. Trükk
  • Martelli, Alex jt. Pythoni kokaraamat. Sebastopol, California: O’Reilly Media, 2005. Trükk
  • Kujutise krediit: https://commons.wikimedia.org/wiki/File:Python_example.jpg
  • Kujutise krediit: https://upload.wikimedia.org/wikipedia/commons/thumb/9/9b/Examples_for_calculating_the_square_root_of_2_with_Heron%27s_method.svg/500px-Examples_for_calculating_the_square_root_of_Home_of2