Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Funzioni Generatrici | Specifica del Valore di Ritorno della Funzione
Tutorial Sulle Funzioni in Python

bookFunzioni Generatrici

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. Le funzioni generatrici producono i valori al momento del bisogno, invece di generare l'intera sequenza in anticipo. Questo le rende efficienti in termini di memoria, soprattutto quando si lavora con grandi insiemi di dati o sequenze infinite.

Considera un semplice esempio di generatore. Questa funzione restituisce i login uno alla volta dalla lista fornita:

12345678910111213141516
def unique_logins_from_list(login_list): # Iterate over each login in the list for login in login_list: yield login # `yield` the current login # A predefined list of available logins login_list = ["user1", "user2", "user3", "user4", "user5"] # Creating a generator instance from the login list login_generator = unique_logins_from_list(login_list) # Generate and print 5 logins, one at a time for _ in range(5): # Each call to `next()` gives the next login print(next(login_generator))
copy

Il principio di un generatore è che consente di restituire i valori uno alla volta utilizzando la parola chiave yield, senza memorizzarli tutti in memoria contemporaneamente. Nel nostro esempio, il generatore unique_logins_from_list itera attraverso la lista di login, restituendo ciascuno tramite yield e si mette in pausa in quel punto. Quando viene chiamato next(), il generatore riprende da dove si era interrotto, producendo i valori in modo efficiente senza la necessità di memorizzare l'intera lista in memoria simultaneamente. Questo rende i generatori particolarmente utili per la gestione di grandi insiemi di dati o flussi di dati.

Compito

Swipe to start coding

Generare ID utente univoci utilizzando una funzione generatore. La funzione id_generator() deve produrre continuamente identificatori come "ID_1", "ID_2", ecc.

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

Soluzione

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 4. Capitolo 4
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

Suggested prompts:

Can you explain how the generator resumes execution after each yield?

What happens if I call next() more times than there are items in the list?

Can you show a real-world scenario where using a generator is better than a regular function?

close

Awesome!

Completion rate improved to 4.35

bookFunzioni 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. Le funzioni generatrici producono i valori al momento del bisogno, invece di generare l'intera sequenza in anticipo. Questo le rende efficienti in termini di memoria, soprattutto quando si lavora con grandi insiemi di dati o sequenze infinite.

Considera un semplice esempio di generatore. Questa funzione restituisce i login uno alla volta dalla lista fornita:

12345678910111213141516
def unique_logins_from_list(login_list): # Iterate over each login in the list for login in login_list: yield login # `yield` the current login # A predefined list of available logins login_list = ["user1", "user2", "user3", "user4", "user5"] # Creating a generator instance from the login list login_generator = unique_logins_from_list(login_list) # Generate and print 5 logins, one at a time for _ in range(5): # Each call to `next()` gives the next login print(next(login_generator))
copy

Il principio di un generatore è che consente di restituire i valori uno alla volta utilizzando la parola chiave yield, senza memorizzarli tutti in memoria contemporaneamente. Nel nostro esempio, il generatore unique_logins_from_list itera attraverso la lista di login, restituendo ciascuno tramite yield e si mette in pausa in quel punto. Quando viene chiamato next(), il generatore riprende da dove si era interrotto, producendo i valori in modo efficiente senza la necessità di memorizzare l'intera lista in memoria simultaneamente. Questo rende i generatori particolarmente utili per la gestione di grandi insiemi di dati o flussi di dati.

Compito

Swipe to start coding

Generare ID utente univoci utilizzando una funzione generatore. La funzione id_generator() deve produrre continuamente identificatori come "ID_1", "ID_2", ecc.

  1. Inizializzare la variabile count con il valore 1, poiché gli identificatori partono da 1.
  2. Utilizzare un ciclo while infinito per generare continuamente identificatori.
  3. Utilizzare yield per restituire l'identificatore corrente nel formato f"ID_{count}".
  4. Incrementare count di 1 dopo ogni iterazione.
  5. Inizializzare l'oggetto generatore id_gen chiamando 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 4
single

single

some-alt