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.
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. ↩︎