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
Funktionelle Programmeringskoncepter i Python

bookIterator-Protokollen

Stryg for at vise menuen

I Python er iteratorprotokollen et sæt metoder, der gør det muligt at iterere over objekter, så de kan bruges med konstruktioner som for-løkker. De to væsentlige metoder, der indgår, er __iter__ og __next__. Når du bruger en for-løkke på et objekt, kalder Python internt objektets __iter__-metode for at hente en iterator. Denne iterator skal have en __next__-metode, som returnerer det næste element i sekvensen, hver gang den kaldes. Når der ikke er flere elementer, skal __next__ udløse en StopIteration-undtagelse for at signalere slutningen af 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__ – Opsætningsfase

Når iteratoren oprettes, modtager den:

  • limit → hvor mange tal der skal genereres;

  • Den sætter current = 0 → startpunktet;

  • Den forbereder alt nødvendigt til iterationen.

__iter__ - Gør objektet itererbart

  • Returnerer self (selve objektet);
  • Dette muliggør brug i en for-løkke.

__next__ - Generering af værdier

Denne metode køres hver gang løkken anmoder om det næste element:

  • Hvis current < limit:
    • Beregn current²;
    • Forøg current med 1;
    • Returner resultatet.
  • Hvis currentlimit:
    • Udløs StopIteration for automatisk at stoppe løkken.
question mark

Hvilket af følgende er påkrævet for at et objekt betragtes som itererbart i Python?

Vælg det korrekte svar

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 5. Kapitel 3

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

Sektion 5. Kapitel 3
some-alt