Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Het Iteratorprotocol | Python-Iteratoren
Functionele Programmeerconcepten in Python

Het Iteratorprotocol

Veeg om het menu te tonen

In Python is het iteratorprotocol een verzameling methoden waarmee objecten kunnen worden geïtereerd, waardoor ze compatibel zijn met constructies zoals for-lussen. De twee essentiële methoden zijn __iter__ en __next__. Wanneer je een for-lus gebruikt op een object, roept Python intern de __iter__-methode van het object aan om een iterator op te halen. Deze iterator moet een __next__-methode hebben, die bij elke aanroep het volgende item in de reeks retourneert. Wanneer er geen items meer zijn, moet __next__ een StopIteration-exceptie opwerpen om het einde van de reeks aan te geven.

1234567891011121314151617181920212223242526
class SquaresIterator: # Initialize with the number of squares to generate def __init__(self, limit): self.limit = limit self.current = 0 # Return the iterator object (itself) def __iter__(self): return self # Return the next square, or stop if done def __next__(self): if self.current < self.limit: # Calculate square result = self.current ** 2 # Move to next number self.current += 1 return result # If no more items else: raise StopIteration for square in SquaresIterator(5): print(square)

__init__ - Initialisatiefase

Wanneer de iterator wordt aangemaakt, ontvangt deze een:

  • limit → hoeveel getallen er gegenereerd moeten worden;

  • Zet current = 0 → het beginpunt;

  • Bereidt alles voor wat nodig is voor iteratie.

__iter__ - Iterabel maken

  • Geeft self (het object zelf) terug;
  • Dit maakt het mogelijk om het object te gebruiken in een for-lus.

__next__ - Waarden genereren

Deze methode wordt uitgevoerd telkens wanneer de lus om het volgende item vraagt:

  • Als current < limit:
    • Bereken current²;
    • Verhoog current met 1;
    • Geef het resultaat terug.
  • Als currentlimit:
    • Geef StopIteration om de lus automatisch te stoppen.
question mark

Welke van de volgende is vereist om een object als iterabel te beschouwen in Python?

Selecteer het correcte antwoord

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 5. Hoofdstuk 3

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

Sectie 5. Hoofdstuk 3
some-alt