Oggetti mutabili e immutabili in Python {ESEMPI}
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 fondamentale delle strutture dati utilizzate 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 Codice:
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 dell'elenco modificabile viene modificato 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 Codice:
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 Codice:
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' che a '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 Codice:
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 mappatura associativa | Mutevole |