Mulige og uforanderlige objekter i Python {EKSEMPLER}
Hva er et foranderlig objekt?
Mulig i Python kan defineres som objektet som kan endres eller betraktes som noe foranderlig i naturen. Mulig betyr muligheten til å endre eller redigere en verdi.
Foranderlige objekter i Python gjør det mulig for programmererne å ha objekter som kan endre verdiene deres. De brukes vanligvis til å lagre en samling av data. Det kan betraktes som noe som har mutert, og den interne tilstanden som gjelder i et objekt har endret seg.
Hva er uforanderlige objekter?
Uforanderlige objekter i Python kan defineres som objekter som ikke endrer sine verdier og attributter over tid.
Disse objektene blir permanente når de er opprettet og initialisert, og de utgjør en kritisk del av datastrukturer som brukes i Python.
Python brukes i tall, tupler, strenger, frosne sett og brukerdefinerte klasser med noen unntak. De kan ikke endres, og verdiene deres forblir permanente når de er initialisert og derfor kalt uforanderlige.
In Python, alt er et objekt
på Python programmeringsspråk, kan alt betraktes som et objekt som består av lister, heltall og funksjoner. Denne funksjonen kan sammenlignes med andre programmeringsspråk som støtter objekter.
Denne funksjonen kan verifiseres ved å bruke en Python tolk som vist nedenfor: –
Python kode:
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))
Utgang:
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
Videre Python gir en innebygd funksjon kalt id som returnerer objektets adresse som tilstede i minnet til Python programmeringsspråk.
Python kode:
z=200 id(z) print("The id of object is", id(z))
Utgang:
the id of object is 9795360
I koden ovenfor gir id-funksjonen med syntaks som id(obj) adressen til obj in Python hukommelse. Her er det et objekt som heter z, og det har en tilordning på 200. Objektet z sendes deretter inn i id-funksjonen som id(z), og Python leverer objektets adresse som 9795360.
Foranderlige objekter i Python
I et foranderlig objekt endres objektets verdi over en periode.
I dette eksemplet har vi forklart mutable objekter i Python, og dette bruker lister som en applikasjon av mutbare objekter som vist nedenfor: -
Python Kode:
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)
Utgang:
The list in Python [1, 2, 3] The list in Python after changing value ['Gurru99', 2, 3]
Som vi kan se i eksemplet ovenfor, er den mutbare listen i Python hadde verdier på 1,2,3. Det første elementet i den mutbare listen endres fra 1 til Guru99, og det oppretter ikke et nytt objekt når en ny verdi initialiseres.
Her kan vi bruke id-metoden for å bruke den. Følgende illustrerer bruken av id-metoden for mutable objekter som vist nedenfor: –
Python Kode:
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))
Produksjon
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
Følgende figur illustrerer det mutbare objektet i Python som vist nedenfor: -
Uforanderlige objekter i Python
Uforanderlige objekter i Python er objekter der forekomstene ikke endres over perioden. Uforanderlige forekomster av en bestemt type endres ikke når de er opprettet, og dette kan verifiseres ved å bruke id-metoden til Python.
La oss ta et eksempel på objekter av heltallstype Python som illustrerer konseptet med uforanderlige objekter i Python som vist nedenfor: -
Python Kode:
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))
Produksjon
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
Det kan sees ovenfor at det er endring i "a." La oss studere hvordan mekanismen fungerer:
- Det er ingen endring i objektets verdi når initialiseringen av "a" med 344.
- I stedet opprettes et nytt objekt og er avgrenset med "a."
- Det andre objektet tildelt som 244 ville ikke lenger være tilgjengelig.
- Eksemplet ovenfor brukte et heltallsobjekt.
Ved a=244 blir et nytt objekt opprettet og referert til "a" som vist nedenfor: –
Legg ut med a=344, det er et nytt objekt referert til med "a". Følgende diagram representerer det samme: -
Derfor, når det er tilordning av en ny verdi til navnet på int-typen, er det en endring i bindingen av navnet til et annet objekt. Det samme prinsippet stemmer overens med tupler, strenger, float og boolsk og derfor betegnet som uforanderlig.
Implikasjoner for ordboktaster inn Python
Ordbøker kan defineres som de bestilte samlingene som lagrer data i nøkkelformatet og ikke tillater duplikater. Ordbøker inneholder én nøkkel som har tilsvarende verdipar justert til seg. De kan endres i typer, og innholdet kan endres selv etter initialisering og opprettelse.
Når som helst peker nøkkelen på ett spesifikt element om gangen. Nøklene til ordbøker er uforanderlige.
La oss ta et hypotetisk scenario som vist nedenfor: –
a = [4, 6] b = [5, 6, 7] my_dict = {a: 'x', b: 'y'} print(my_dict)
Utgang: – Ovennevnte Python koden gir ingen utdata, og i stedet genererer den en typefeil av uhashbar type. Dette er en hypotetisk situasjon og brukes ikke i Python kompilatoren.
Her a
er definert som [4,6], og i ordboken er det definert som x. Her, b
er definert som [5,6,7], og i ordboken er det definert som y.
- Nøkkelen 'a' har verdien av [4,6], og den initialiseres videre til x.
- Nøkkelen 'b' har verdien av [5,6,7] som initialiseres videre til 'y' i en ordbok.
- Anta nå at verdien av 'en' er vedlagt 5 og 7, som er en nøkkel for ordboken.
- Da er ordboken mutert, og den ville gitt begge deler 'X' og 'og' som verdier for ordboken ovenfor.
Tenk på følgende scenario som illustrert ovenfor: –
a = [5, 6,7] b = [5, 6, 7] my_dict = {a: 'x', b: 'y'} print(my_dict)
Derfor, som et programmeringsspråk, Python gjør nøklene til ordboken uforanderlige, og ordbøker er uforanderlige datatyper.
Unntak i uforanderlighet
Imidlertid Python gir unntak fra uforanderlighet. slike unntak kan observeres for tuppelobjekttypen. En tuppel kan være en kombinasjon av foranderlige og uforanderlige objekttyper. La oss ta et eksempel for å forklare unntakene i uforanderlighet som vist nedenfor: -
Python Kode:
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))
Utgang:
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
Du kan se i koden ovenfor at det første elementet, som er en liste, kan endres, mens tuppelen er uforanderlig. Verdien av tuppelen kan ikke endres, men innholdet i listen som finnes inne i tuppelen kan endre verdien.
Derfor reiser dette et unntak om at de uforanderlige objektene ikke endrer deres verdi, men verdien av bestanddelene endrer deres verdi.
Foranderlige vs. uforanderlige objekter
Her er store forskjeller mellom Mutable og Immutable Objects:
Mulig objekt | Uforanderlig objekt |
---|---|
Objekttilstanden kan endres når den er opprettet | Objekttilstanden kan ikke endres når den er opprettet |
Foranderlige objekter anses ikke som trådsikre i naturen. | Uforanderlige objekter anses som trådsikre i naturen. |
De mutbare objektene gjøres ikke endelige, og derfor kan programmereren fortsette å endre mutable objekter og bruke de samme objektene. | Det er avgjørende å gjøre klassene endelige når det er opprettelsen av det uforanderlige objektet |
Python Uforanderlige datatyper
Klasse | Forklaring | Uforanderlig eller ikke |
---|---|---|
Bool | Boolsk verdi | Uforanderlig |
int | Heltallsverdi (størrelsen kan være vilkårlig) | Uforanderlig |
Flyte | Flytende kommanummer | Uforanderlig |
Liste | Sekvens av gjenstander av foranderlig natur | Kan endres |
tuppel | Sekvens av gjenstander av uforanderlig natur | Uforanderlig |
Str | Tegn /streng | Uforanderlig |
Sett | sett med distinkte objekter som er av uordnet natur | Kan endres |
Frossensett | Sett klasse av uforanderlig natur | Uforanderlig |
Dikt | Ordbok eller assosiativ kartlegging | Kan endres |