Foranderlige og uforanderlige objekter i Python
โก Smart opsummering
Foranderlige og uforanderlige objekter i Python varierer i, om deres tilstand รฆndrer sig efter oprettelsen. Foranderlige typer som lister og ordbรธger รฆndrer sig pรฅ plads, mens uforanderlige typer som strenge og tupler ikke kan.

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 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 Code:
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 den 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 Code:
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 Code:
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 Code:
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 associativt kortping | Omskiftelig |


