Veranderlijke en onveranderlijke objecten in Python {VOORBEELDEN}
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 om 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 waarvan de 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 daarin worden gebruikt Python.
Python wordt gebruikt in getallen, 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, alles is een object
In de Python programmeertaal kan alles worden beschouwd als een object dat lijsten, gehele getallen en functies omvat. Deze functie kan worden vergeleken met andere programmeertalen die objecten ondersteunen.
Deze functie kan worden geverifieerd met behulp van een Python tolk 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, Python biedt een ingebouwde functie met de naam id die het adres van het object retourneert zoals aanwezig in het geheugen van de Python programmeertaal.
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 adres van het object 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 uitgelegd in Python, en dit maakt gebruik van lijsten 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, is de veranderlijke lijst in Python had 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 het te gebruiken. Hieronder wordt het gebruik van de id-methode voor veranderlijke objecten geïllustreerd, 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 volgende afbeelding illustreert het veranderlijke object in Python zoals hieronder weergegeven: –
Onveranderlijke objecten in Python
Onveranderlijke objecten in Python zijn objecten waarbij de instanties gedurende de periode niet veranderen. Onveranderlijke instanties van een specifiek type veranderen, zodra ze zijn gemaakt, niet meer, en dit kan worden geverifieerd met behulp van de id-methode van Python.
Laten we een voorbeeld nemen van objecten van het gehele type Python dat het concept van onveranderlijke objecten illustreert Python 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: –
Bericht met behulp van a=344, er is een nieuw object gerefereerd met “a”. Het volgende diagram geeft hetzelfde weer: –
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)
Uitgang: – Het 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.
Beschouw het volgende scenario zoals hierboven geïllustreerd: –
a = [5, 6,7] b = [5, 6, 7] my_dict = {a: 'x', b: 'y'} print(my_dict)
Daarom is het als programmeertaal Python maakt de sleutels van het woordenboek onveranderlijk, en woordenboeken zijn onveranderlijke gegevenstypen.
Uitzonderingen in onveranderlijkheid
Echter, Python biedt 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 |