Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Il Protocollo degli Iteratori | Python Iterators
Concetti di Programmazione Funzionale in Python

bookIl Protocollo degli Iteratori

Scorri per mostrare il menu

In Python, il protocollo degli iteratori è un insieme di metodi che consente agli oggetti di essere iterati, rendendoli compatibili con costrutti come i cicli for. I due metodi essenziali coinvolti sono __iter__ e __next__. Quando si utilizza un ciclo for su un oggetto, Python richiama internamente il metodo __iter__ dell'oggetto per ottenere un iteratore. Questo iteratore deve avere un metodo __next__, che restituisce l'elemento successivo della sequenza ogni volta che viene chiamato. Quando non ci sono più elementi, __next__ deve sollevare un'eccezione StopIteration per segnalare la fine della sequenza.

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__ - Fase di inizializzazione

Quando viene creato l'iteratore, riceve:

  • limit → quanti numeri generare;

  • Imposta current = 0 → il punto di partenza;

  • Prepara tutto il necessario per l'iterazione.

__iter__ - Rendere un oggetto iterabile

  • Restituisce self (l'oggetto stesso);
  • Questo permette di utilizzarlo in un ciclo for.

__next__ - Produzione dei valori

Questo metodo viene eseguito ogni volta che il ciclo richiede il prossimo elemento:

  • Se current < limit:
    • Calcola current²;
    • Incrementa current di 1;
    • Restituisce il risultato.
  • Se currentlimit:
    • Solleva StopIteration per terminare automaticamente il ciclo.
question mark

Quale delle seguenti condizioni è necessaria affinché un oggetto sia considerato iterabile in Python?

Seleziona la risposta corretta

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 5. Capitolo 3

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

Sezione 5. Capitolo 3
some-alt