Veranderlijke en onveranderlijke objecten in Python {EXAMPLES}

Wat is een veranderlijk object?

Veranderlijk in Python kan worden gedefinieerd als het object dat kan veranderen of kan worden beschouwd als iets veranderlijks van aard. Veranderlijk betekent de mogelijkheid om een ​​waarde te wijzigen of te bewerken.

Veranderlijke objecten in Python stellen de programmeurs in staat objecten te hebben die hun waarden kunnen veranderen. Ze worden over het algemeen gebruikt om een ​​verzameling gegevens op te slaan. Het kan worden beschouwd als iets dat is gemuteerd, en de interne toestand die van toepassing is binnen een object is veranderd.

Wat zijn onveranderlijke objecten?

Onveranderlijke objecten in Python kunnen worden gedefinieerd als objecten die hun waarden en attributen in de loop van de tijd niet veranderen.
Deze objecten worden permanent zodra ze zijn gemaakt en geïnitialiseerd, en vormen een cruciaal onderdeel van de datastructuren die in Python worden gebruikt.

Python wordt gebruikt in cijfers, tupels, strings, bevroren sets en door de gebruiker gedefinieerde klassen met enkele uitzonderingen. Ze kunnen niet veranderen, en hun waarden en waarden blijven permanent zodra ze zijn geïnitialiseerd en daarom onveranderlijk worden genoemd.

In Python is alles een object

In de programmeertaal Python kan alles worden beschouwd als een object dat bestaat uit lijsten, gehele getallen en functies. Deze functie kan worden vergeleken met andere programmeertalen die objecten ondersteunen.

Deze functie kan worden geverifieerd met behulp van een Python-interpreter, zoals hieronder weergegeven: –

Python-code:

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

Verder biedt Python een ingebouwde functie met de naam id die het adres van het object retourneert zoals aanwezig in het geheugen van de programmeertaal Python.

Python-code:

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

Output:

the id of object is 9795360

In de bovenstaande code geeft de id-functie met syntaxis als id(obj) het adres van obj in Python-geheugen. Hier is er een object met de naam z, en het heeft een toewijzing van 200. Het object z wordt vervolgens doorgegeven aan de id-functie als id(z), en de Python levert het objectadres als 9795360.

Veranderlijke objecten in Python

Bij een veranderlijk object verandert de waarde van het object in de loop van de tijd.

In dit voorbeeld hebben we veranderlijke objecten in Python uitgelegd, en hierbij worden lijsten gebruikt als een toepassing van veranderlijke objecten, zoals hieronder weergegeven: –

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]

Zoals we in het hierboven gegeven voorbeeld kunnen zien, had de veranderlijke lijst in Python waarden van 1,2,3. Het eerste element van de veranderlijke lijst wordt gewijzigd van 1 in Guru99, en er wordt geen nieuw object gemaakt wanneer een nieuwe waarde wordt geïnitialiseerd.

Hier kunnen we de id-methode gebruiken om deze te gebruiken. Volgwing illustreert het gebruik van de id-methode voor veranderlijke objecten, zoals hieronder weergegeven: –

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

uitgang

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

De following figuur illustreert het veranderlijke object in Python, zoals hieronder weergegeven: –

Veranderlijke objecten in Python

Onveranderlijke objecten in Python

Onveranderlijke objecten in Python zijn objecten waarvan de instanties gedurende de periode niet veranderen. Onveranderlijke instanties van een specifiek type veranderen, eenmaal gemaakt, niet, en dit kan worden geverifieerd met behulp van de id-methode van Python.

Laten we een voorbeeld nemen van objecten van het gehele type in Python dat het concept van onveranderlijke objecten in Python illustreert, zoals hieronder weergegeven:

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

uitgang

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

Hierboven is te zien dat er verandering is in “a.” Laten we bestuderen hoe het mechanisme werkt:

  • Er is geen verandering in de waarde van het object bij de initialisatie van “a” met 344.
  • In plaats daarvan wordt een nieuw object gemaakt dat wordt begrensd door ‘a’.
  • Het andere object dat is toegewezen als 244 zou niet langer toegankelijk zijn.
  • In het bovenstaande voorbeeld werd een geheel getalobject gebruikt.

Bij a=244 wordt een nieuw object gemaakt en verwezen naar “a”, zoals hieronder weergegeven: –

Onveranderlijke objecten in Python

Wanneer u a=344 gebruikt, is er een nieuw object waarnaar wordt verwezen met “a”. De volgendewing diagram vertegenwoordigt hetzelfde: –

Onveranderlijke objecten in Python

Daarom is er, telkens wanneer er een nieuwe waarde wordt toegewezen aan de naam van het int-type, een verandering in de binding van de naam met een ander object. Hetzelfde principe komt overeen met tupels, strings, float en Boolean worden daarom onveranderlijk genoemd.

Implicaties voor woordenboeksleutels in Python

Woordenboeken kunnen worden gedefinieerd als de geordende verzamelingen die gegevens in het sleutelformaat opslaan en geen duplicaten toestaan. Woordenboeken bevatten één sleutel met een corresponderend waardepaar erop uitgelijnd. Ze zijn veranderlijk van type en hun inhoud kan zelfs na initialisatie en creatie worden gewijzigd.

Op elk moment wijst de sleutel naar één specifiek element tegelijk. De sleutels van woordenboeken zijn onveranderlijk.

Laten we een hypothetisch scenario nemen, zoals hieronder weergegeven: –

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

Uitvoer: – De bovenstaande Python-code levert geen enkele uitvoer op, maar genereert in plaats daarvan een typefout van het niet-hashbare type. Dit is een hypothetische situatie en wordt niet gebruikt in de Python-compiler.

Hier a wordt gedefinieerd als [4,6], en in het woordenboek wordt het gedefinieerd als x. Hier, b wordt gedefinieerd als [5,6,7], en in het woordenboek wordt het gedefinieerd als y.

  • De sleutel 'a' heeft de waarde [4,6] en wordt verder geïnitialiseerd op x.
  • De sleutel 'b' heeft de waarde [5,6,7], die in een woordenboek verder wordt geïnitialiseerd naar 'y'.
  • Neem nu aan dat de waarde van 'een' wordt toegevoegd met 5 en 7, wat een sleutel is voor het woordenboek.
  • Dan is het woordenboek gemuteerd en zou het beide geven 'X' en 'y' als waarden voor het bovenstaande woordenboek.

Denk eens aan het volgendewing scenario zoals hierboven geïllustreerd: –

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

Daarom maakt Python als programmeertaal de sleutels van het woordenboek onveranderlijk, en zijn woordenboeken onveranderlijke gegevenstypen.

Uitzonderingen in onveranderlijkheid

Python biedt echter uitzonderingen op de onveranderlijkheid. Dergelijke uitzonderingen kunnen worden waargenomen voor het tuple-objecttype. Een tupel kan een combinatie zijn van veranderlijke en onveranderlijke objecttypen. Laten we een voorbeeld nemen om de uitzonderingen op het gebied van onveranderlijkheid uit te leggen, zoals hieronder weergegeven:

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

Je kunt in de bovenstaande code zien dat het eerste element, dat een lijst is, veranderlijk is, terwijl het tupel onveranderlijk is. De waarde van het tupel kan niet worden gewijzigd, maar de inhoud van de lijst in het tupel kan de waarde ervan wijzigen.

Daarom roept dit een uitzondering op dat de onveranderlijke objecten hun waarde niet veranderen, maar de waarde van de bestanddelen verandert hun waarde.

Veranderlijke versus onveranderlijke objecten

Hier zijn de belangrijkste verschillen tussen veranderlijke en onveranderlijke objecten:

Veranderlijk object onveranderlijk object
De objectstatus kan worden gewijzigd zodra deze is gemaakt De objectstatus kan na creatie niet meer worden gewijzigd
Veranderlijke objecten worden niet als draadveilig van aard beschouwd. Onveranderlijke objecten worden beschouwd als draadveilig van aard.
De veranderlijke objecten zijn niet definitief gemaakt en daarom kan de programmeur de veranderlijke objecten blijven veranderen en dezelfde objecten gebruiken. Het is van cruciaal belang om klassen definitief te maken wanneer er een onveranderlijk object wordt gemaakt

Python onveranderlijke gegevenstypen

Klasse Uitleg Onveranderlijk of niet
Boos Booleaanse waarde Onveranderlijk
Int Geheel getal (grootte kan willekeurig zijn) Onveranderlijk
Vlotter Drijvend-kommagetal Onveranderlijk
Lijst Opeenvolging van objecten van veranderlijke aard Veranderlijk
tuple Opeenvolging van objecten van onveranderlijke aard Onveranderlijk
Str Teken /tekenreeks Onveranderlijk
Zet de een reeks afzonderlijke objecten die van ongeordende aard zijn Veranderlijk
Bevrorenset Vastgestelde klasse van onveranderlijke aard Onveranderlijk
Dictaat Woordenboek of associatieve mapping Veranderlijk