Föränderliga och oföränderliga objekt i Python {EXEMPEL}

Vad är ett föränderligt objekt?

Föränderlig i Python kan definieras som det objekt som kan förändras eller betraktas som något föränderligt till sin natur. Föränderlig betyder möjligheten att ändra eller redigera ett värde.

Föränderliga objekt i Python gör det möjligt för programmerarna att ha objekt som kan ändra deras värden. De används vanligtvis för att lagra en samling data. Det kan betraktas som något som har muterats, och det interna tillståndet som gäller inom ett objekt har förändrats.

Vad är oföränderliga objekt?

Oföränderliga föremål i Python kan definieras som objekt som inte ändrar sina värden och attribut över tid.
Dessa objekt blir permanenta när de väl har skapats och initierats, och de utgör en kritisk del av datastrukturer som används i Python.

Python används i siffror, tupler, strängar, frysta uppsättningar och användardefinierade klasser med några undantag. De kan inte ändras, och deras värden och det förblir permanenta när de väl har initierats och därför kallas oföränderliga.

In Python, allt är ett objekt

I Python programmeringsspråk, kan allt betraktas som ett objekt bestående av listor, heltal och funktioner. Denna funktion kan jämföras med andra programmeringsspråk som stöder objekt.

Denna funktion kan verifieras med en Python tolk enligt nedan: –

Python koda:

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

Produktion:

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

Vidare, Python tillhandahåller en inbyggd funktion med namnet id som returnerar objektets adress som finns i minnet av Python programmeringsspråk.

Python koda:

z=200
id(z)
print("The id of object is", id(z))

Produktion:

the id of object is 9795360

I ovanstående kod ger id-funktionen med syntax som id(obj) adressen till obj in Python minne. Här finns ett objekt som heter z, och det har en tilldelning på 200. Objektet z skickas sedan till id-funktionen som id(z), och Python levererar objektets adress som 9795360.

Föränderliga objekt i Python

I ett föränderligt objekt ändras objektets värde över en tidsperiod.

I det här exemplet har vi förklarat föränderliga objekt i Python, och detta använder listor som en tillämpning av föränderliga objekt som visas nedan: –

Python Koda:

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)

Produktion:

The list in Python [1, 2, 3]
The list in Python after changing value ['Gurru99', 2, 3]

Som vi kan se i det ovan givna exemplet är den föränderliga listan i Python hade värden på 1,2,3. Det första elementet i den föränderliga listan ändras från 1 till Guru99, och det skapar inte ett nytt objekt när ett nytt värde initieras.

Här kan vi använda id-metoden för att använda den. Följande illustrerar användningen av id-metoden för föränderliga objekt som visas nedan: –

Python Koda:

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öljande figur illustrerar det föränderliga objektet i Python som visas nedan: –

Föränderliga objekt i Python

Oföränderliga föremål i Python

Oföränderliga föremål i Python är objekt där instanserna inte ändras under perioden. Oföränderliga instanser av en specifik typ, när de väl har skapats, ändras inte, och detta kan verifieras med hjälp av id-metoden för Python.

Låt oss ta ett exempel på heltalstypobjekt i Python som illustrerar begreppet oföränderliga objekt i Python som visas nedan: –

Python Koda:

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 kan ses ovan att det finns en förändring i "a." Låt oss studera hur mekanismen fungerar:

  • Det finns ingen förändring i objektets värde när initieringen av "a" med 344.
  • Istället skapas ett nytt objekt och begränsas av "a."
  • Det andra objektet som tilldelats som 244 skulle inte längre vara tillgängligt.
  • Ovanstående exempel använde ett heltalsobjekt.

Vid a=244 skapas ett nytt objekt och refereras till "a" som visas nedan: –

Oföränderliga föremål i Python

Lägg upp med a=344, det finns ett nytt objekt som refereras till med "a". Följande diagram representerar samma sak: -

Oföränderliga föremål i Python

Därför, närhelst det tilldelas ett nytt värde till namnet på int-typen, sker en förändring i bindningen av namnet med ett annat objekt. Samma princip är i linje med tupler, strängar, float och Boolean kallas därför oföränderlig.

Konsekvenser för ordboksnycklar in Python

Ordböcker kan definieras som de ordnade samlingarna som lagrar data i nyckelformatet och inte tillåter dubbletter. Ordböcker innehåller en nyckel som har motsvarande värdepar anpassat till sig. De är föränderliga i typer, och deras innehåll kan ändras även efter att de initierats och skapats.

När som helst pekar nyckeln på ett specifikt element åt gången. Ordböckernas nycklar är oföränderliga.

Låt oss ta ett hypotetiskt scenario som visas nedan: -

a = [4, 6]
b = [5, 6, 7]
my_dict = {a: 'x', b: 'y'}
print(my_dict)

Utgång: – Ovanstående Python koden ger ingen utdata, och istället genererar den ett typfel av unhashbar typ. Detta är en hypotetisk situation och används inte i Python kompilator.

Här, a definieras som [4,6], och i ordboken är det definierat som x. Här, b definieras som [5,6,7], och i ordboken definieras det som y.

  • Nyckeln 'a' har värdet [4,6], och den initieras ytterligare till x.
  • Nyckeln 'b' har värdet [5,6,7] som initieras ytterligare till 'y' i en ordbok.
  • Antag nu att värdet av 'a' läggs till med 5 och 7, som är en nyckel för ordboken.
  • Då har ordboken muterats, och den skulle ge både och 'x' och 'och' som värden för ovanstående ordbok.

Tänk på följande scenario som illustreras ovan: –

a = [5, 6,7]
b = [5, 6, 7]
my_dict = {a: 'x', b: 'y'}
print(my_dict)

Därför, som ett programmeringsspråk, Python gör nycklar i ordboken oföränderliga, och ordböcker är oföränderliga datatyper.

Undantag i oföränderlighet

Emellertid Python ger undantag från oföränderlighet. Sådana undantag kan observeras för tupelobjekttypen. En tupel kan vara en kombination av föränderliga och oföränderliga objekttyper. Låt oss ta ett exempel för att förklara undantagen i oföränderlighet som visas nedan: -

Python Koda:

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

Produktion:

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 ovanstående kod att det första elementet, som är en lista, är föränderligt, medan tupeln är oföränderlig. Värdet på tuppeln kan inte ändras, men innehållet i listan som finns inuti tuppeln kan ändra dess värde.

Därför väcker detta ett undantag att de oföränderliga objekten inte ändrar sitt värde, men värdet på beståndsdelar ändrar deras värde.

Föränderliga vs. oföränderliga objekt

Här är stora skillnader mellan föränderliga och oföränderliga objekt:

Föränderligt objekt Oföränderligt objekt
Objektets tillstånd kan ändras när det väl har skapats Objektets tillstånd kan inte ändras när det väl har skapats
Föränderliga objekt betraktas inte som trådsäkra till sin natur. Oföränderliga föremål anses vara trådsäkra till sin natur.
De föränderliga objekten görs inte slutgiltiga, och därför kan programmeraren fortsätta att ändra föränderliga objekt och använda samma objekt. Det är avgörande att göra klasserna slutgiltiga när det oföränderliga objektet skapas

Python Oföränderliga datatyper

Klass Förklaring Oföränderlig eller inte
Bool booleskt värde Oföränderlig
Int Heltalsvärde (storlek kan vara godtycklig) Oföränderlig
Flyta Flyttalsnummer Oföränderlig
Lista Sekvens av objekt av föränderlig natur Föränderlig
tupel Sekvens av objekt av oföränderlig natur Oföränderlig
Str Karaktär /sträng Oföränderlig
uppsättning uppsättning distinkta objekt som är av oordnad natur Föränderlig
Frozenset Ange klass av oföränderlig natur Oföränderlig
Dikt Ordbok eller associativ kartläggning Föränderlig