Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Iterator-protokollen | Python Iterators
Funksjonelle Programmeringskonsepter i Python

bookIterator-protokollen

Sveip for å vise menyen

I Python er iteratorprotokollen et sett med metoder som gjør det mulig å iterere over objekter, slik at de blir kompatible med konstruksjoner som for-løkker. De to essensielle metodene som inngår er __iter__ og __next__. Når du bruker en for-løkke på et objekt, kaller Python internt objektets __iter__-metode for å hente en iterator. Denne iteratoren må ha en __next__-metode, som returnerer neste element i sekvensen hver gang den kalles. Når det ikke er flere elementer igjen, må __next__ kaste et StopIteration-unntak for å signalisere slutten på sekvensen.

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__ – Oppstartsfasen

Når iteratoren opprettes mottar den:

  • limit → hvor mange tall som skal genereres;

  • Setter current = 0 → startpunktet;

  • Forbereder alt som trengs for iterasjonen.

__iter__ – Gjør objektet itererbart

  • Returnerer self (objektet selv);
  • Dette gjør at du kan bruke det i en for-løkke.

__next__ – Produserer verdier

Denne metoden kjøres hver gang løkken ber om neste element:

  • Hvis current < limit:
    • Beregn current²;
    • Øk current med 1;
    • Returner resultatet.
  • Hvis currentlimit:
    • Kast StopIteration for å stoppe løkken automatisk.
question mark

Hvilket av følgende er et krav for at et objekt skal regnes som itererbart i Python?

Velg det helt riktige svaret

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 5. Kapittel 3

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

Seksjon 5. Kapittel 3
some-alt