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: -

Foranderlige objekter i Python

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: –

Uforanderlige objekter i Python

Legg ut med a=344, det er et nytt objekt referert til med "a". Følgende diagram representerer det samme: -

Uforanderlige objekter i Python

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