single
Funzioni Generatrici
Scorri per mostrare il menu
Una funzione generatrice è un tipo speciale di funzione che utilizza la parola chiave yield invece di return per generare una sequenza di valori. Quando una funzione generatrice viene chiamata, restituisce un oggetto iteratore, che può essere iterato per recuperare i valori uno alla volta.
Il principale vantaggio delle funzioni generatrici è la loro efficienza nella gestione della memoria. Invece di generare l'intera sequenza in anticipo e memorizzarla in memoria, i generatori producono i valori al volo quando sono necessari.
Come funziona yield
A differenza di return, che termina completamente la funzione, yield mette in pausa la funzione e ne salva lo stato. Alla chiamata successiva di next(), il generatore riprende esattamente dal punto in cui era stato interrotto:
12345678910def count_up(start, stop): while start <= stop: yield start # Pause and return the current value start += 1 # Resume from here on the next call counter = count_up(1, 3) print(next(counter)) # 1 print(next(counter)) # 2 print(next(counter)) # 3
È anche possibile iterare su un generatore utilizzando un ciclo for – chiama automaticamente next() fino a quando il generatore non è esaurito:
1234567def count_up(start, stop): while start <= stop: yield start start += 1 for value in count_up(1, 5): print(value) # 1, 2, 3, 4, 5
Quando un generatore è esaurito (nessun valore da restituire), chiamare next() su di esso genererà un errore StopIteration. Un ciclo for gestisce automaticamente questa situazione.
Scorri per iniziare a programmare
Implementare una funzione generatore even_numbers che produca numeri pari in un intervallo specificato.
- Definire una funzione generatore
even_numbersche accetti due parametri:startestop. - Utilizzare un ciclo
whileper iterare finchéstartè minore o uguale astop. - Utilizzare
yieldper restituirestartsolo se è pari (divisibile per 2). - Incrementare
startdi 1 dopo ogni iterazione. - Utilizzare un ciclo
forper stampare tutti i valori generati.
Soluzione
Grazie per i tuoi commenti!
single
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione