single
Generator Infiniti
Scorri per mostrare il menu
Ricorda che yield mette in pausa un generatore e lo riprende alla successiva chiamata di next(). Finora, i generatori che hai visto avevano un chiaro punto di arresto. Tuttavia, i generatori diventano particolarmente potenti quando vengono combinati con un ciclo infinito – producendo valori indefinitamente senza mai memorizzarli in memoria.
Generatori infiniti con while True
Utilizzare un ciclo while True all'interno di un generatore crea una sequenza infinita – qualcosa che sarebbe impossibile da memorizzare come lista. Il generatore produce il valore successivo solo quando viene chiamato next():
1234567891011def counter(): count = 1 while True: # Runs forever yield count # Return current value and pause count += 1 # Resume from here on the next call gen = counter() print(next(gen)) # 1 print(next(gen)) # 2 print(next(gen)) # 3
Non importa quante volte chiami next(), il generatore avrà sempre un nuovo valore pronto – non anticipa mai né memorizza valori in memoria.
Controllo di un generatore infinito
Poiché il generatore continua all'infinito, è necessario controllare quanti valori recuperare. Il modo più comune è utilizzare un ciclo for con range():
12345678910def counter(): count = 1 while True: yield count count += 1 gen = counter() for _ in range(5): print(next(gen)) # 1, 2, 3, 4, 5
Non iterare mai su un generatore infinito con un semplice ciclo for senza una condizione di arresto: continuerà all'infinito e potrebbe bloccare il programma.
Scorri per iniziare a programmare
Generazione di ID utente univoci utilizzando una funzione generatore infinita. La funzione id_generator() deve produrre continuamente identificatori come "ID_1", "ID_2", ecc.
- Inizializzazione della variabile
countcon il valore 1, poiché gli identificatori partono da 1. - Utilizzo di un ciclo
whileinfinito per generare continuamente identificatori. - Utilizzo di
yieldper restituire l'identificatore corrente nel formatof"ID_{count}". - Incremento di
countdi 1 dopo ogni iterazione. - Inizializzazione dell'oggetto generatore
id_gentramite la chiamata aid_generator().
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