Un generatore in Python è un tipo speciale di funzione che restituisce un flusso di valori. A differenza di una normale funzione, che restituisce tutti i valori in una volta, un generatore li restituisce uno alla volta, il che consente di risparmiare memoria. Questo può essere particolarmente utile quando si lavora con grandi quantità di dati.
I generatori sono definiti come funzioni normali, ma utilizzano la parola chiave “yield” al posto di “return”. Quando una funzione generatrice viene chiamata, restituisce un oggetto generatore senza avviare immediatamente l’esecuzione della funzione. Quando “next()” è chiamata sul generatore, la funzione è eseguita fino a quando incontra “yield”, a quel punto restituisce il suo valore. Alla chiamata successiva di “next()”, la funzione riprende da dove si è interrotta (ricorda tutti i valori delle sue variabili) e continua fino al prossimo “yield”.