Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Iteratorprotokollet | Python Iterators
Funktionella Programmeringskoncept i Python

bookIteratorprotokollet

Svep för att visa menyn

I Python är iteratorprotokollet en uppsättning metoder som gör det möjligt för objekt att itereras över, vilket gör dem kompatibla med konstruktioner som for-loopar. De två grundläggande metoderna som används är __iter__ och __next__. När du använder en for-loop på ett objekt anropar Python internt objektets __iter__-metod för att hämta en iterator. Denna iterator måste ha en __next__-metod, som returnerar nästa objekt i sekvensen varje gång den anropas. När det inte finns fler objekt måste __next__ utlösa ett StopIteration-undantag för att signalera slutet 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__ – Initieringsfas

När iteratorn skapas tar den emot:

  • limit → hur många tal som ska genereras;

  • Den sätter current = 0 → startvärdet;

  • Den förbereder allt som behövs för iterationen.

__iter__ – Gör objektet itererbart

  • Returnerar self (själva objektet);
  • Det är detta som möjliggör användning i en for-loop.

__next__ – Genererar värden

Denna metod körs varje gång loopen begär nästa element:

  • Om current < limit:
    • Beräkna current²;
    • Öka current med 1;
    • Returnera resultatet.
  • Om currentlimit:
    • Kasta StopIteration för att automatiskt avsluta loopen.
question mark

Vilket av följande krävs för att ett objekt ska betraktas som itererbart i Python?

Vänligen välj det korrekta svaret

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 5. Kapitel 3

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

Avsnitt 5. Kapitel 3
some-alt