Generatori Python: scrivi codice super efficiente!

Jan 19 2023
I generatori Python sono un tipo speciale di funzione che consente di iterare su una sequenza di valori, senza dover memorizzare l'intera sequenza in memoria. Sono un potente strumento per lavorare con set di dati di grandi dimensioni o per generare sequenze infinite di valori.

I generatori Python sono un tipo speciale di funzione che consente di iterare su una sequenza di valori, senza dover memorizzare l'intera sequenza in memoria. Sono un potente strumento per lavorare con set di dati di grandi dimensioni o per generare sequenze infinite di valori.

Cosa c'è di diverso da una funzione normale?

Una funzione generatore è definita come una funzione normale, ma invece di utilizzare la parola chiave return, utilizza la parola chiave yield . Quando viene chiamata una funzione generatore, restituisce un oggetto iteratore, che può essere utilizzato per scorrere i valori generati dalla funzione.

Perché usare i generatori?

Uno dei principali vantaggi dei generatori è che sono efficienti in termini di memoria. Poiché generano solo un valore alla volta, possono gestire set di dati di grandi dimensioni o sequenze infinite senza consumare molta memoria.

Un altro vantaggio dei generatori è che sono pigri. Ciò significa che generano valori solo quando sono necessari, piuttosto che generare tutti i valori in anticipo. Questo può essere utile per lavorare con set di dati di grandi dimensioni o per generare sequenze infinite.

Ok.. come si usa?

La seguente funzione generatore genera la sequenza di Fibonacci:

def fibonacci():
    a, b = 0, 1
    while True:
        yield a
        a, b = b, a + b

fib = fibonacci()
print(next(fib)) # 0
print(next(fib)) # 1
print(next(fib)) # 1
print(next(fib)) # 2

for number in fibonacci():
    if number > 100:
        break
    print(number)

I generatori possono anche essere usati in combinazione con altre funzionalità di Python, come la comprensione delle liste o il modulo itertools, per creare codice potente ed espressivo. Puoi provarlo tu stesso!

Buona fortuna Silo