Obiecte mutabile și imuabile în Python {EXEMPLE}
Ce este un obiect mutabil?
Mutabil în Python poate fi definit ca obiectul care se poate schimba sau poate fi privit ca ceva schimbător în natură. Mutabil înseamnă capacitatea de a modifica sau edita o valoare.
Obiecte mutabile în Python permite programatorilor să aibă obiecte care își pot schimba valorile. În general, acestea sunt utilizate pentru a stoca o colecție de date. Poate fi privit ca ceva care a suferit mutații, iar starea internă aplicabilă într-un obiect s-a schimbat.
Ce sunt obiectele imuabile?
Obiecte imuabile în Python pot fi definite ca obiecte care nu își modifică valorile și atributele în timp.
Aceste obiecte devin permanente odată create și inițializate și formează o parte critică a structurilor de date utilizate în Python.
Python este folosit în numere, tupluri, șiruri, seturi înghețate și clase definite de utilizator, cu unele excepții. Ele nu se pot schimba, iar valorile lor rămân permanente odată ce sunt inițializate și, prin urmare, sunt numite imuabile.
In Python, totul este un obiect
În Python limbaj de programare, totul poate fi privit ca un obiect care cuprinde liste, numere întregi și funcții. Această caracteristică poate fi comparată cu alte limbaje de programare care acceptă obiecte.
Această caracteristică poate fi verificată folosind un Python interpret după cum se arată mai jos: –
Python cod:
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))
ieșire:
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
În continuare, Python oferă o funcție încorporată numită id care returnează adresa obiectului așa cum este prezentă în memoria Python limbaj de programare.
Python cod:
z=200 id(z) print("The id of object is", id(z))
ieșire:
the id of object is 9795360
În codul de mai sus, funcția id având sintaxă ca id(obj) oferă adresa obj in Python memorie. Aici, există un obiect numit z și are o atribuire de 200. Obiectul z este apoi trecut în funcția id ca id(z), iar Python furnizează adresa obiectului ca 9795360.
Obiecte mutabile în Python
Într-un obiect mutabil, valoarea obiectului se modifică într-o perioadă de timp.
În acest exemplu, am explicat obiectele mutabile în Python, iar aceasta utilizează liste ca o aplicație a obiectelor mutabile, așa cum se arată mai jos: –
Python Cod:
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)
ieșire:
The list in Python [1, 2, 3] The list in Python after changing value ['Gurru99', 2, 3]
După cum putem vedea în exemplul de mai sus, lista mutabilă în Python a avut valori de 1,2,3. Primul element al listei mutabile este schimbat de la 1 la Guru99 și nu creează un obiect nou atunci când o nouă valoare este inițializată.
Aici putem folosi metoda id pentru a o folosi. Următoarele ilustrează utilizarea metodei id pentru obiectele mutabile, după cum se arată mai jos: –
Python Cod:
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))
producție
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
Următoarea figură ilustrează obiectul mutabil în Python după cum se arată mai jos: -
Obiecte imuabile în Python
Obiecte imuabile în Python sunt obiecte în care instanțele nu se modifică de-a lungul perioadei. Instanțele imuabile de un anumit tip, odată create, nu se modifică, iar acest lucru poate fi verificat folosind metoda id de Python.
Să luăm un exemplu de obiecte de tip întreg în Python care ilustrează conceptul de obiecte imuabile în Python după cum se arată mai jos: -
Python Cod:
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))
producție
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
S-a putut vedea mai sus că există o schimbare în „a”. Să studiem cum funcționează mecanismul:
- Nu există nicio modificare a valorii obiectului la inițializarea lui „a” cu 344.
- În schimb, un nou obiect este creat și este mărginit cu „a”.
- Celălalt obiect atribuit ca 244 nu ar mai fi accesibil.
- Exemplul de mai sus a folosit un obiect întreg.
La a=244, un nou obiect este creat și referit la „a”, după cum se arată mai jos: –
Postați folosind a=344, există un nou obiect referit cu „a”. Următoarea diagramă reprezintă același lucru: -
Prin urmare, ori de câte ori are loc atribuirea unei noi valori numelui de tip int, are loc o schimbare în legarea numelui cu un alt obiect. Același principiu se aliniază cu tuplurile, siruri, float și boolean, deci denumit imuabil.
Implicații pentru cheile de dicționar în Python
Dicționarele pot fi definite ca colecții ordonate care stochează date în format cheie și nu permit duplicate. Dicționarele conțin o cheie care are perechea de valori corespunzătoare aliniată la ea. Sunt modificabile în tipuri, iar conținutul lor poate fi schimbat chiar și după inițializarea și crearea lor.
În orice moment, cheia indică un anumit element la un moment dat. Cheile dicționarelor sunt imuabile.
Să luăm un scenariu ipotetic, așa cum se arată mai jos: -
a = [4, 6] b = [5, 6, 7] my_dict = {a: 'x', b: 'y'} print(my_dict)
Ieșire: – Cele de mai sus Python codul nu produce nicio ieșire și, în schimb, generează o eroare de tip de tip neshunabil. Aceasta este o situație ipotetică și nu este utilizată în Python compilator.
Aici, a
este definit ca [4,6], iar în dicționar, este definit ca x. Aici, b
este definit ca [5,6,7], iar în dicționar, este definit ca y.
- Cheia „a” are valoarea [4,6] și este inițializată în continuare la x.
- Cheia „b” are valoarea [5,6,7] care este inițializată în continuare la „y” într-un dicționar.
- Acum presupuneți că valoarea lui 'A' este atașat cu 5 și 7, care este o cheie pentru dicționar.
- Apoi dicționarul a fost modificat și le-ar da pe ambele 'X' si „y” ca valori pentru dicționarul de mai sus.
Luați în considerare următorul scenariu, așa cum este ilustrat mai sus: -
a = [5, 6,7] b = [5, 6, 7] my_dict = {a: 'x', b: 'y'} print(my_dict)
Prin urmare, ca limbaj de programare, Python face cheile dicționarului imuabile, iar dicționarele sunt tipuri de date imuabile.
Excepții în imuabilitate
"Dar daca Python oferă excepții de la imuabilitate astfel de excepții pot fi observate pentru tipul de obiect tuplu. Un tuplu poate fi o combinație de tipuri de obiecte mutabile și imuabile. Să luăm un exemplu pentru a explica excepțiile în imuabilitate, așa cum se arată mai jos: –
Python Cod:
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))
ieșire:
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
Puteți vedea în codul de mai sus, că primul element, care este o listă, este mutabil, în timp ce tuplul este imuabil. Valoarea tuplului nu poate fi modificată, dar conținutul listei prezente în interiorul tuplului își poate schimba valoarea.
Prin urmare, aceasta ridică o excepție conform căreia obiectele imuabile nu își schimbă valoarea, dar valoarea constituenților își schimbă valoarea.
Obiecte mutabile vs. Imuabile
Iată diferențele majore dintre obiectele mutabile și imuabile:
Obiect mutabil | Obiect imuabil |
---|---|
Starea obiectului poate fi schimbată odată creat | Starea obiectului nu poate fi schimbată odată creat |
Obiectele mutabile nu sunt considerate ca fiind sigure pentru fire. | Obiectele imuabile sunt considerate ca fiind sigure în fire. |
Obiectele mutabile nu sunt definitive și, prin urmare, programatorul poate continua să schimbe obiectele mutabile și să folosească aceleași obiecte. | Este esențial să faceți clasele finale atunci când există crearea obiectului imuabil |
Python Tipuri de date imuabile
Clasă | Explicație | Imuabil sau nu |
---|---|---|
boolean | Valoare booleană | Imuabil |
Int | Valoare întreagă (magnitudinea poate fi arbitrară) | Imuabil |
pluti | Număr în virgulă mobilă | Imuabil |
Listă | Secvență de obiecte de natură mutabilă | Mutabil |
tuplu | Secvență de obiecte de natură imuabilă | Imuabil |
Str | Caracter /șir | Imuabil |
set | ansamblu de obiecte distincte care sunt de natură neordonată | Mutabil |
Frozenset | Setați o clasă de natură imuabilă | Imuabil |
Dict | Dicţionar sau cartografiere asociativă | Mutabil |