Foranderlige og uforanderlige objekter i Python {EKSEMPLER}
Hvad er et foranderligt objekt?
Foranderlig i Python kan defineres som det objekt, der kan ændre sig eller betragtes som noget foranderligt i naturen. Mutable betyder evnen til at ændre eller redigere en værdi.
Foranderlige objekter i Python gøre det muligt for programmører at have objekter, der kan ændre deres værdier. De bruges generelt til at gemme en samling af data. Det kan betragtes som noget, der har muteret, og den interne tilstand, der er gældende i et objekt, har ændret sig.
Hvad er uforanderlige objekter?
Uforanderlige objekter i Python kan defineres som objekter, der ikke ændrer deres værdier og attributter over tid.
Disse objekter bliver permanente, når de først er oprettet og initialiseret, og de udgør en kritisk del af datastrukturer, der bruges i Python.
Python bruges i tal, tupler, strenge, frosne sæt og brugerdefinerede klasser med nogle undtagelser. De kan ikke ændre sig, og deres værdier og det forbliver permanente, når de først er initialiseret og derfor kaldet uforanderlige.
In Python, alt er et objekt
I Python programmeringssprog, kan alt betragtes som et objekt bestående af lister, heltal og funktioner. Denne funktion kan sammenlignes med andre programmeringssprog, der understøtter objekter.
Denne funktion kan verificeres ved hjælp af 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))
Output:
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
Endvidere, Python giver en indbygget funktion ved navn id, der returnerer objektets adresse som til stede i hukommelsen af Python programmeringssprog.
Python kode:
z=200 id(z) print("The id of object is", id(z))
Output:
the id of object is 9795360
I ovenstående kode giver id-funktionen med syntaks som id(obj) adressen på obj in Python hukommelse. Her er der et objekt ved navn z, og det har en tildeling på 200. Objektet z overføres derefter til id-funktionen som id(z), og Python leverer objektets adresse som 9795360.
Foranderlige objekter i Python
I et foranderligt objekt ændres objektets værdi over en periode.
I dette eksempel har vi forklaret foranderlige objekter i Python, og dette bruger lister som en anvendelse af foranderlige 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)
Output:
The list in Python [1, 2, 3] The list in Python after changing value ['Gurru99', 2, 3]
Som vi kan se i det ovenfor givne eksempel, er den foranderlige liste i Python havde værdier på 1,2,3. Det første element i den foranderlige liste ændres fra 1 til Guru99, og det opretter ikke et nyt objekt, når en ny værdi initialiseres.
Her kan vi bruge id-metoden til at bruge den. Det følgende illustrerer brugen af id-metoden til 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))
Produktion
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 foranderlige objekt i Python som vist nedenfor: -
Uforanderlige objekter i Python
Uforanderlige objekter i Python er objekter, hvor forekomsterne ikke ændrer sig i løbet af perioden. Uforanderlige forekomster af en bestemt type ændres ikke, når de er oprettet, og dette kan verificeres ved hjælp af id-metoden Python.
Lad os tage et eksempel på heltalsobjekter i Python der illustrerer begrebet 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))
Produktion
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 kunne ses ovenfor, at der er ændring i "a." Lad os studere, hvordan mekanismen virker:
- Der er ingen ændring i objektets værdi, når initialiseringen af "a" med 344.
- I stedet oprettes et nyt objekt og er afgrænset med "a."
- Det andet objekt tildelt som 244 ville ikke længere være tilgængeligt.
- Ovenstående eksempel brugte et heltalsobjekt.
Ved a=244 oprettes et nyt objekt og refereres til "a" som vist nedenfor: –
Indlæg med a=344, der er et nyt objekt, der henvises til med "a". Følgende diagram repræsenterer det samme: -
Derfor, når der er tildeling af en ny værdi til navnet på int-typen, er der en ændring i bindingen af navnet med et andet objekt. Det samme princip stemmer overens med tupler, strygere, float og boolsk og derfor betegnet uforanderlig.
Implikationer for ordbogsnøgler ind Python
Ordbøger kan defineres som de ordnede samlinger, der gemmer data i nøgleformatet og ikke tillader dubletter. Ordbøger indeholder én nøgle, som har tilsvarende værdipar justeret til sig. De kan ændres i typer, og deres indhold kan ændres selv efter deres initialisering og oprettelse.
På ethvert tidspunkt peger nøglen på ét specifikt element ad gangen. Nøglerne til ordbøger er uforanderlige.
Lad os tage et hypotetisk scenarie som vist nedenfor: -
a = [4, 6] b = [5, 6, 7] my_dict = {a: 'x', b: 'y'} print(my_dict)
Output: – Ovenstående Python kode giver ikke noget output, og i stedet genererer den en typefejl af uhashbar type. Dette er en hypotetisk situation og bruges ikke i Python compiler
Her, a
er defineret som [4,6], og i ordbogen er det defineret som x. Her, b
er defineret som [5,6,7], og i ordbogen er det defineret som y.
- Nøglen 'a' har værdien [4,6], og den initialiseres yderligere til x.
- Nøglen 'b' har værdien [5,6,7], som yderligere initialiseres til 'y' i en ordbog.
- Antag nu, at værdien af 'en' er tilføjet 5 og 7, som er en nøgle til ordbogen.
- Så er ordbogen blevet muteret, og den ville give begge dele 'x' og 'y' som værdier for ovenstående ordbog.
Overvej følgende scenarie som illustreret ovenfor: –
a = [5, 6,7] b = [5, 6, 7] my_dict = {a: 'x', b: 'y'} print(my_dict)
Derfor, som et programmeringssprog, Python gør ordbogens nøgler uforanderlige, og ordbøger er uforanderlige datatyper.
Undtagelser i uforanderlighed
Imidlertid Python giver undtagelser til uforanderlighed. Sådanne undtagelser kan observeres for tuple-objekttypen. En tupel kan være en kombination af foranderlige og uforanderlige objekttyper. Lad os tage et eksempel for at forklare undtagelserne i uforanderlighed 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))
Output:
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 ovenstående kode, at det første element, som er en liste, kan ændres, mens tuple er uforanderlig. Værdien af tuplen kan ikke ændres, men indholdet af listen, der findes inde i tuplen, kan ændre dens værdi.
Derfor rejser dette en undtagelse, at de uforanderlige objekter ikke ændrer deres værdi, men værdien af bestanddele ændrer deres værdi.
Foranderlige vs. uforanderlige objekter
Her er store forskelle mellem foranderlige og uforanderlige objekter:
Foranderligt objekt | Uforanderligt objekt |
---|---|
Objekttilstanden kan ændres, når den er oprettet | Objekttilstanden kan ikke ændres, når først den er oprettet |
Foranderlige objekter anses ikke for at være trådsikre. | Uforanderlige genstande betragtes som trådsikre i naturen. |
De foranderlige objekter gøres ikke endelige, og derfor kan programmøren blive ved med at ændre foranderlige objekter og bruge de samme objekter. | Det er afgørende at gøre klasserne endelige, når der er skabelsen af det uforanderlige objekt |
Python Uforanderlige datatyper
Klasse | Forklaring | Uforanderlig eller ej |
---|---|---|
Bool | boolsk værdi | uforanderlige |
Int | Heltalsværdi (størrelsen kan være vilkårlig) | uforanderlige |
Flyde | Flydende kommanummer | uforanderlige |
Liste | Rækkefølge af objekter af foranderlig natur | Omskiftelig |
Tuple | Sekvens af genstande af uforanderlig natur | uforanderlige |
Str | Tegn /streng | uforanderlige |
sæt | sæt af distinkte objekter, der er af uordnet karakter | Omskiftelig |
Frosset | Sæt klasse af uforanderlig natur | uforanderlige |
Dikt | Ordbog eller associativ kortlægning | Omskiftelig |