Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Generator Infiniti | Specifica del Valore di Ritorno della Funzione
Tutorial Sulle Funzioni in Python
Sezione 4. Capitolo 5
single

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():

1234567891011
def 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():

12345678910
def counter(): count = 1 while True: yield count count += 1 gen = counter() for _ in range(5): print(next(gen)) # 1, 2, 3, 4, 5
Note
Nota

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.

Compito

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.

  1. Inizializzazione della variabile count con il valore 1, poiché gli identificatori partono da 1.
  2. Utilizzo di un ciclo while infinito per generare continuamente identificatori.
  3. Utilizzo di yield per restituire l'identificatore corrente nel formato f"ID_{count}".
  4. Incremento di count di 1 dopo ogni iterazione.
  5. Inizializzazione dell'oggetto generatore id_gen tramite la chiamata a id_generator().

Soluzione

Switch to desktopCambia al desktop per esercitarti nel mondo realeContinua da dove ti trovi utilizzando una delle opzioni seguenti
Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 4. Capitolo 5
single

single

Chieda ad AI

expand

Chieda ad AI

ChatGPT

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

some-alt