Oggetti mutabili e immutabili in Python
โก Riepilogo intelligente
Oggetti mutabili e immutabili in Python Differiscono per il fatto che il loro stato cambi o meno dopo la creazione. I tipi mutabili, come liste e dizionari, cambiano sul posto, mentre i tipi immutabili, come stringhe e tuple, non possono.

Cos'รจ un oggetto mutabile?
Mutevole dentro Python puรฒ essere definito come l'oggetto che puรฒ cambiare o essere considerato come qualcosa di mutevole in natura. Mutevole significa la possibilitร di modificare o modificare un valore.
Oggetti mutabili dentro Python consentire ai programmatori di avere oggetti che possono modificare i loro valori. Generalmente vengono utilizzati per archiviare una raccolta di dati. Puรฒ essere considerato come qualcosa che รจ mutato e lo stato interno applicabile all'oggetto รจ cambiato.
Cosa sono gli oggetti immutabili?
Oggetti immutabili in Python possono essere definiti come oggetti che non cambiano i loro valori e attributi nel tempo. Questi oggetti diventano permanenti una volta creati e inizializzati e costituiscono una parte critica delle strutture dati utilizzate in Python.
Python รจ usato nei numeri, tuple, stringhe, set congelati e classi definite dall'utente con alcune eccezioni. Non possono cambiare e i loro valori rimangono permanenti una volta inizializzati e quindi chiamati immutabili.
In Python, tutto รจ un oggetto
Nel Python linguaggio di programmazione, tutto puรฒ essere considerato come un oggetto comprendente liste, numeri interi e funzioni. Questa funzionalitร puรฒ essere paragonata ad altri linguaggi di programmazione che supportano gli oggetti.
Questa funzionalitร puรฒ essere verificata utilizzando a Python interprete come mostrato di seguito: โ
Python codice:
print("The following instance is an object:",isinstance(3,object))
print("Another instance for object", isinstance(True, object))
def my_func():
return "guru99"
print("This is a function example and regarded as an object in Python:", isinstance(my_func, object))
Produzione:
A following instance is an object: True Another instance for object True This is a function example and regarded as an object in Python: True
Ulteriormente, Python fornisce una funzione incorporata denominata id che restituisce l'indirizzo dell'oggetto come presente nella memoria del Python linguaggio di programmazione.
Python codice:
z=200
id(z)
print("The id of object is", id(z))
Produzione:
the id of object is 9795360
Nel codice precedente, la funzione id con sintassi id(obj) fornisce l'indirizzo di obj in Python memoria. Qui c'รจ un oggetto chiamato z e ha un'assegnazione di 200. L'oggetto z viene quindi passato alla funzione id come id(z) e il Python fornisce l'indirizzo dell'oggetto come 9795360.
Oggetti mutabili dentro Python
In un oggetto mutabile, il valore dell'oggetto cambia in un periodo di tempo.
In questo esempio, abbiamo spiegato gli oggetti mutabili Python, e questo utilizza gli elenchi come applicazione di oggetti mutabili come mostrato di seguito: โ
Python Code:
mut_list = [1, 2, 3]
print("The list in Python",mut_list)
mut_list[0] = 'Gurru99'
mut_list
print("The list in Python after changing value",mut_list)
Produzione:
The list in Python [1, 2, 3] The list in Python after changing value ['Gurru99', 2, 3]
Come possiamo vedere nell'esempio sopra riportato, l'elenco mutabile in Python aveva valori di 1,2,3. Il primo elemento della lista mutabile viene cambiato da 1 a Guru99, e non crea un nuovo oggetto quando viene inizializzato un nuovo valore.
Qui possiamo usare il metodo id per utilizzarlo. Di seguito viene illustrato l'uso del metodo id per oggetti mutabili come mostrato di seguito: โ
Python Code:
mut_list = [1, 2, 3]
print("The list in Python",mut_list)
print("the id of the list is ",id(mut_list))
mut_list[0] = 'Gurru99'
mut_list
print("The mut list in Python after changing value",mut_list)
print("the id of the list is post change in value",id(mut_list))
Uscita
The list in Python [1, 2, 3] the id of the list is 139931568729600 The list in Python after changing value ['Gurru99', 2, 3] the id of the list is post change in value 139931568729600
La figura seguente illustra l'oggetto mutabile in Python come mostrato di seguito: โ
Oggetti immutabili in Python
Oggetti immutabili in Python sono oggetti in cui le istanze non cambiano nel periodo. Le istanze immutabili di un tipo specifico, una volta create, non cambiano e questo puรฒ essere verificato utilizzando il metodo id di Python.
Prendiamo un esempio di oggetti di tipo intero in Python che illustra il concetto di oggetti immutabili in Python come mostrato di seguito: โ
Python Code:
a=244
print("the number before change is",a)
print("the id of number before change is",id(a))
a=344
print("the number after change is",a)
print("the id of number after change is",id(a))
Uscita
the number before a change is 244 the id of number before change is 9796768 the number before change is 344 the id of number before change is 140032307887024
Si potrebbe vedere sopra che c'รจ un cambiamento in "a". Studiamo come funziona il meccanismo:
- Non vi รจ alcun cambiamento nel valore dell'oggetto quando si inizializza "a" con 344.
- Viene invece creato un nuovo oggetto delimitato da "a".
- L'altro oggetto assegnato come 244 non sarebbe piรน accessibile.
- L'esempio precedente utilizzava un oggetto intero.
A a=244, viene creato un nuovo oggetto e si fa riferimento ad "a" come mostrato di seguito: โ
Post usando a=344, c'รจ un nuovo oggetto referenziato con "a". Il seguente diagramma rappresenta lo stesso: โ
Pertanto, ogni volta che avviene l'assegnazione di un nuovo valore al nome di tipo int, si verifica una modifica nell'associazione del nome con un altro oggetto. Lo stesso principio si allinea con le tuple, stringhe, float e booleano quindi definiti immutabili.
Implicazioni per le chiavi del dizionario Python
I dizionari possono essere definiti come raccolte ordinate che memorizzano i dati nel formato chiave e non consentono duplicati. I dizionari contengono una chiave a cui รจ allineata la coppia di valori corrispondente. Sono di tipo modificabile e il loro contenuto puรฒ essere modificato anche dopo l'inizializzazione e la creazione.
In ogni momento, la chiave punta a un elemento specifico alla volta. Le chiavi dei dizionari sono immutabili.
Prendiamo uno scenario ipotetico come mostrato di seguito: โ
a = [4, 6]
b = [5, 6, 7]
my_dict = {a: 'x', b: 'y'}
print(my_dict)
Risultato: โ Quanto sopra Python il codice non produce alcun output e genera invece un errore di tipo di tipo non hashable. Questa รจ una situazione ipotetica e non viene utilizzata in Python compilatore.
Qui, a รจ definito come [4,6] e nel dizionario รจ definito come x. Qui, b รจ definito come [5,6,7] e nel dizionario รจ definito come y.
- La chiave "a" ha il valore [4,6] ed รจ ulteriormente inizializzata su x.
- La chiave "b" ha il valore [5,6,7] che viene ulteriormente inizializzato su "y" in un dizionario.
- Supponiamo ora che il valore di 'un' viene aggiunto con 5 e 7, che รจ una chiave per il dizionario.
- Quindi il dizionario รจ stato modificato e fornirebbe entrambi 'X' and 'y' come valori per il dizionario di cui sopra.
Consideriamo lo scenario seguente come illustrato sopra: โ
a = [5, 6,7]
b = [5, 6, 7]
my_dict = {a: 'x', b: 'y'}
print(my_dict)
Quindi, come linguaggio di programmazione, Python rende immutabili le chiavi del dizionario e i dizionari sono tipi di dati immutabili.
Eccezioni nell'immutabilitร
Perรฒ, Python fornisce eccezioni all'immutabilitร , tali eccezioni possono essere osservate per il tipo di oggetto tupla. Una tupla puรฒ essere una combinazione di tipi di oggetto mutabili e immutabili. Facciamo un esempio per spiegare le eccezioni nell'immutabilitร come mostrato di seguito: โ
Python Code:
tupexample=([1,1],'guru99')
print("the tuple before change",tupexample)
print("the id of tuple before change",id(tupexample))
tupexample=([2,2],'guru99')
print("the tuple after change",tupexample)
print("the id of tuple after change",id(tupexample))
Produzione:
the tuple before change ([1, 1], 'guru99') the id of tuple before change 140649480694656 the tuple after change ([2, 2], 'guru99') the id of tuple after change 140649480694592
Puoi vedere nel codice sopra che il primo elemento, che รจ una lista, รจ mutabile, mentre la tupla รจ immutabile. Il valore della tupla non puรฒ essere modificato, ma il contenuto della lista presente all'interno della tupla puรฒ modificarne il valore.
Pertanto, ciรฒ solleva un'eccezione secondo cui gli oggetti immutabili non cambiano il loro valore, ma il valore dei costituenti cambia il loro valore.
Oggetti mutabili e oggetti immutabili
Ecco le principali differenze tra oggetti mutabili e immutabili:
| Oggetto mutevole | Oggetto immutabile |
| Lo stato dell'oggetto puรฒ essere modificato una volta creato | Lo stato dell'oggetto non puรฒ essere modificato una volta creato |
| Gli oggetti mutabili non sono considerati di natura thread-safe. | Gli oggetti immutabili sono considerati di natura thread-safe. |
| Gli oggetti mutabili non sono definitivi e quindi il programmatore puรฒ continuare a cambiare oggetti mutabili e utilizzare gli stessi oggetti. | ร fondamentale rendere le classi definitive quando si verifica la creazione dell'oggetto immutabile |
Python Tipi di dati immutabili
| Classe | Spiegazione | Immutabile o no |
| Bool | Valore booleano | Immutabile |
| Int | Valore intero (la grandezza puรฒ essere arbitraria) | Immutabile |
| galleggiante | Numero in virgola mobile | Immutabile |
| Lista | Sequenza di oggetti di natura mutevole | Mutevole |
| tuple | Sequenza di oggetti di natura immutabile | Immutabile |
| Str | Carattere/stringa | Immutabile |
| Impostato | insieme di oggetti distinti che sono di natura non ordinata | Mutevole |
| Set congelato | Imposta classe di natura immutabile | Immutabile |
| dict | Dizionario o mappa associativaping | Mutevole |


