Tipi di dati immutabili

I tipi di dati immutabili in Python sono oggetti il cui stato non può essere modificato dopo la creazione. Questa caratteristica ha importanti implicazioni per la sicurezza e l’integrità dei dati.

Esempi di tipi immutabili

  • Interi (int)
  • Numeri in virgola mobile (float)
  • Stringhe (str)
  • Tuple
  • Frozen set

Comportamento degli oggetti immutabili

Consideriamo il seguente esempio dove si utilizza la funzione id()1 con una stringa:

s = "hello"
print(id(s))  # 140721261412912
s += " world"
print(id(s))  # 140721261412976

In questo caso, l’operazione += crea un nuovo oggetto stringa, assegnando un nuovo id.

Tipi di dati mutabili

I tipi di dati mutabili in Python sono oggetti il cui stato può essere modificato dopo la creazione. Questa caratteristica offre flessibilità ma richiede attenzione nella gestione della memoria.

Esempi di tipi mutabili

  • Liste
  • Dizionari
  • Set

Comportamento degli oggetti mutabili

Consideriamo il seguente esempio con una lista:

l = [1, 2, 3]
print(id(l))  # 140721261413056
l.append(4)
print(id(l))  # 140721261413056

In questo caso, l’operazione append() modifica l’oggetto lista esistente, mantenendo lo stesso id.

Implicazioni per la gestione della memoria

La mutabilità ha un impatto significativo sulla gestione della memoria in Python:

  • Gli oggetti immutabili possono essere ottimizzati attraverso l’interning, riducendo il consumo di memoria.
  • Gli oggetti mutabili richiedono una gestione più attenta per evitare effetti collaterali indesiderati.

Impatto sulle prestazioni

La scelta tra tipi mutabili e immutabili può influenzare le prestazioni del codice:

  • Le operazioni su oggetti immutabili spesso comportano la creazione di nuovi oggetti, che può essere costosa in termini di tempo e memoria.
  • Le operazioni su oggetti mutabili possono essere più efficienti per modifiche frequenti, ma richiedono attenzione per evitare modifiche accidentali.

Conclusioni

La comprensione della mutabilità in Python è fondamentale per lo sviluppo di software efficiente e robusto. Mentre i tipi immutabili offrono garanzie di integrità dei dati, i tipi mutabili forniscono flessibilità e potenzialmente migliori prestazioni in scenari specifici. La scelta tra i due dovrebbe essere guidata dalle esigenze specifiche dell’applicazione, considerando attentamente le implicazioni per la gestione della memoria e le prestazioni.


  1. La funzione id() in Python restituisce l’“identificatore” (o indirizzo) di un oggetto. Questo identificatore è un numero intero unico che viene assegnato a ogni oggetto quando viene creato. Rimane invariato per l’intera durata dell’oggetto, ma può essere riutilizzato per altri oggetti dopo che l’oggetto originale è stato eliminato. ↩︎