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

bookHet Iteratorprotocol

Veeg om het menu te tonen

In Python is het iteratorprotocol een set 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)
copy

__init__ – Initialisatiefase

Wanneer de iterator wordt aangemaakt, ontvangt deze een:

  • limit → hoeveel getallen er gegenereerd moeten worden;

  • Stelt current = 0 in → het beginpunt;

  • Bereidt alles voor wat nodig is voor iteratie.

__iter__ - Het object iterabel maken

  • Retourneert self (het object zelf);
  • 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;
    • Retourneer het resultaat.
  • Als currentlimit:
    • Genereer StopIteration om de lus automatisch te stoppen.
question mark

Welke van de volgende is vereist zodat een object als iterabel wordt beschouwd 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