appelleitérateuretdontlaseulefonctionestdeleparcourir.Ilpossèdepourcelaune
seuleméthode,laméthodenext().
Voyonscelasurunexemple.
Oncréeuneliste
Oncréel'objetitérateurassociéàcettelistequivapermettredelaparcourir.Onpeut
aussiappelerlafonctionintrinsèqueiter().
Aupassage,onvérifiesontype,iciunitérateurdeliste
Oncommenceàparcourirlalistegrâceàlaméthodenext()
Oncontinueàparcourirlaliste;onconstatequel'itérateurgardeenmémoirel'endroitoù
ons'estarrêté.
Alafinduparcours,iln'yaplusdevaleuràafficher,next()provoqueuneexception
C'estprécisémentcequisepassel'exceptionenmoinslorsquePythonexécuteune
bouclefor.Onutiliseicilemotclépassquisignifiequedanslecasd’uneexceptionde
typeStopIteration,l’exécutioncontinuesansrienfaire.
Avousdejouer.
s5
Quelestl'intérêtd'introduirelesitérateurs?Onpourraitavoirbesoin,parexemple,de
parcourirleconteneurdedroiteàgauche(commedanscetexemple,deladernièrelettre
àlapremière).Or,laboucleforestunmécanismedehautniveauquinepeutêtremodifié.
Pourmodifierlafaçondonts'effectueleparcours,ilfaudraitredéfinirlaméthode__iter__
del'objetconteneurquinousintéresse,l'objetstringparexemple;puisredéfinirl'itérateur
associéàcetobjetstring.C'estassezlourdetceladépasselecadredecemodule.
Ilexisteunautremécanisme,plussimpleetplusintuitifpermettantdemodifierun
itérateur:lesgénérateurs.
s6
Lesgénérateurssontunmoyenpratiquedecréeretmanipulerdesitérateurs.Voyons
commentilsfonctionnent.
Ungénérateurestunefonctionunpeuparticulière,capablederetournerunevaleur
différenteàchaqueappelgrâceàunesuccessiondemotsclésyield.
Voyonscelasurunpremierexempletrèssimple.
Ondéfinitunefonctionmon_generateur1grâceaumotclédef.ici,aulieud'utiliserle
motcléreturn,onvoitquel'onutiliseplusieursfoislemotcléyield.C'estcemotcléqui