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: –
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: –
Lägg upp med a=344, det finns ett nytt objekt som refereras till med "a". Följande diagram representerar samma sak: -
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 |