Veränderliche und unveränderliche Objekte in Python {BEISPIELE}

Was ist ein veränderliches Objekt?

Veränderlich in Python kann als Objekt definiert werden, das sich ändern kann oder als etwas von Natur aus Veränderliches angesehen werden kann. Veränderlich bedeutet die Fähigkeit, einen Wert zu ändern oder zu bearbeiten.

Veränderbare Objekte in Python ermöglichen es den Programmierern, Objekte zu haben, die ihre Werte ändern können. Sie werden im Allgemeinen verwendet, um eine Datensammlung zu speichern. Sie können als etwas betrachtet werden, das mutiert ist, und der interne Zustand, der innerhalb eines Objekts gilt, hat sich geändert.

Was sind unveränderliche Objekte?

Unveränderliche Objekte in Python können als Objekte definiert werden, die ihre Werte und Attribute im Laufe der Zeit nicht ändern.
Diese Objekte werden dauerhaft, sobald sie erstellt und initialisiert sind, und sie bilden einen kritischen Teil der Datenstrukturen, die in Python.

Python wird in Zahlen verwendet, Tupel, Strings, eingefrorene Mengen und benutzerdefinierte Klassen mit einigen Ausnahmen. Sie können sich nicht ändern und ihre Werte bleiben dauerhaft, sobald sie initialisiert und daher unveränderlich genannt werden.

In Pythonalles ist ein Objekt

Im Python In einer Programmiersprache kann alles als Objekt betrachtet werden, einschließlich Listen, Ganzzahlen und Funktionen. Diese Funktion ist mit anderen Programmiersprachen vergleichbar, die Objekte unterstützen.

Diese Funktion kann überprüft werden durch einen Python Interpreter wie unten gezeigt: –

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

Ausgang:

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

Ferner Python bietet eine eingebaute Funktion namens id, die die Adresse des Objekts zurückgibt, wie sie im Speicher des Python Programmiersprache.

Python Code:

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

Ausgang:

the id of object is 9795360

Im obigen Code gibt die ID-Funktion mit der Syntax id(obj) die Adresse von obj in Python Speicher. Hier gibt es ein Objekt mit dem Namen z und es hat eine Zuweisung von 200. Das Objekt z wird dann als id(z) an die id-Funktion übergeben, und die Python liefert die Adresse des Objektes als 9795360.

Veränderbare Objekte in Python

Bei einem veränderlichen Objekt ändert sich der Wert des Objekts im Laufe der Zeit.

In diesem Beispiel haben wir veränderliche Objekte erklärt in Python, und diese nutzt Listen als Anwendung veränderlicher Objekte, wie unten gezeigt: –

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)

Ausgang:

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

Wie wir im obigen Beispiel sehen können, ist die veränderbare Liste in Python hatte Werte von 1,2,3. Das erste Element der veränderbaren Liste wird von 1 in Guru99 geändert und es wird kein neues Objekt erstellt, wenn ein neuer Wert initialisiert wird.

Hier können wir die ID-Methode verwenden, um es zu nutzen. Im Folgenden wird die Verwendung der ID-Methode für veränderliche Objekte wie folgt veranschaulicht: –

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

Ausgang

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

Die folgende Abbildung zeigt das veränderbare Objekt in Python wie unten gezeigt: –

Veränderbare Objekte in Python

Unveränderliche Objekte in Python

Unveränderliche Objekte in Python sind Objekte, deren Instanzen sich im Laufe der Zeit nicht ändern. Unveränderliche Instanzen eines bestimmten Typs ändern sich nach ihrer Erstellung nicht mehr, und dies kann mithilfe der ID-Methode von überprüft werden. Python.

Betrachten wir ein Beispiel für Objekte vom Typ Integer in Python das das Konzept unveränderlicher Objekte veranschaulicht in Python wie unten gezeigt: –

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

Ausgang

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

Oben konnte man sehen, dass es eine Veränderung in „a“ gibt. Lassen Sie uns untersuchen, wie der Mechanismus funktioniert:

  • Bei der Initialisierung von „a“ mit 344 ändert sich der Wert des Objekts nicht.
  • Stattdessen wird ein neues Objekt erstellt und mit „a“ begrenzt.
  • Das andere Objekt mit der Nummer 244 wäre dann nicht mehr erreichbar.
  • Im obigen Beispiel wurde ein Integer-Objekt verwendet.

Bei a=244 wird ein neues Objekt erstellt und auf „a“ verwiesen, wie unten gezeigt: –

Unveränderliche Objekte in Python

Nach der Verwendung von a=344 gibt es ein neues Objekt, das mit „a“ referenziert wird. Das folgende Diagramm stellt dasselbe dar: –

Unveränderliche Objekte in Python

Daher kommt es immer dann zu einer Änderung in der Bindung des Namens an ein anderes Objekt, wenn dem Namen vom Typ int ein neuer Wert zugewiesen wird. Das gleiche Prinzip gilt für Tupel, Streicher, Float und Boolean werden daher als unveränderlich bezeichnet.

Auswirkungen auf Wörterbuchschlüssel in Python

Wörterbücher können als geordnete Sammlungen definiert werden, die Daten im Schlüsselformat speichern und keine Duplikate zulassen. Wörterbücher enthalten einen Schlüssel, an dem das entsprechende Wertepaar ausgerichtet ist. Ihre Typen sind veränderbar und ihr Inhalt kann auch nach ihrer Initialisierung und Erstellung geändert werden.

Zu jedem Zeitpunkt weist der Schlüssel jeweils auf ein bestimmtes Element hin. Die Schlüssel von Wörterbüchern sind unveränderlich.

Nehmen wir ein hypothetisches Szenario wie unten gezeigt: –

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

Ausgabe: – Das obige Python Code erzeugt keine Ausgabe, sondern einen Typfehler eines nicht hashbaren Typs. Dies ist eine hypothetische Situation und wird nicht in der Python Compiler.

Hier a ist als [4,6] definiert und im Wörterbuch als x. Hier, b ist als [5,6,7] definiert und im Wörterbuch als y.

  • Der Schlüssel „a“ hat den Wert [4,6] und wird weiter auf x initialisiert.
  • Der Schlüssel „b“ hat den Wert [5,6,7], der in einem Wörterbuch weiter auf „y“ initialisiert wird.
  • Nehmen wir nun an, dass der Wert von 'ein' wird mit 5 und 7 angehängt, was ein Schlüssel für das Wörterbuch ist.
  • Dann wurde das Wörterbuch mutiert und es würde beides geben 'x' und 'y' als Werte für das obige Wörterbuch.

Betrachten Sie das folgende Szenario, wie oben dargestellt: –

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

Daher ist es als Programmiersprache Python macht die Schlüssel des Wörterbuchs unveränderlich und Wörterbücher sind unveränderliche Datentypen.

Ausnahmen in der Unveränderlichkeit

Aber, Python bietet Ausnahmen von der Unveränderlichkeit. Solche Ausnahmen können für den Tupel-Objekttyp beobachtet werden. Ein Tupel kann eine Kombination aus veränderlichen und unveränderlichen Objekttypen sein. Lassen Sie uns ein Beispiel nehmen, um die Ausnahmen bei der Unveränderlichkeit wie folgt zu erklären: –

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

Ausgang:

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

Im obigen Code können Sie sehen, dass das erste Element, eine Liste, veränderbar ist, während das Tupel unveränderlich ist. Der Wert des Tupels kann nicht geändert werden, aber der Inhalt der im Tupel vorhandenen Liste kann seinen Wert ändern.

Dies löst daher die Ausnahme aus, dass die unveränderlichen Objekte ihren Wert nicht ändern, der Wert der Bestandteile jedoch ihren Wert ändert.

Veränderliche vs. unveränderliche Objekte

Hier sind die Hauptunterschiede zwischen veränderlichen und unveränderlichen Objekten:

Veränderbares Objekt Unveränderliches Objekt
Der Objektstatus kann nach der Erstellung geändert werden Der Objektstatus kann nach der Erstellung nicht mehr geändert werden
Veränderbare Objekte gelten nicht als Thread-sicher. Unveränderliche Objekte gelten als threadsicher.
Die veränderlichen Objekte werden nicht endgültig gemacht, und daher kann der Programmierer weiterhin veränderbare Objekte ändern und dieselben Objekte verwenden. Es ist wichtig, Klassen endgültig zu machen, wenn das unveränderliche Objekt erstellt wird

Python Unveränderliche Datentypen

Klasse Erläuterung Unveränderlich oder nicht
Bool Boolescher Wert Unveränderlich
Int Ganzzahliger Wert (Größe kann beliebig sein) Unveränderlich
Schwimmer Fließkommazahl Unveränderlich
Liste Folge von Objekten veränderlicher Natur Veränderlich
Tupel Folge von Objekten unveränderlicher Natur Unveränderlich
Str Zeichenkette Unveränderlich
Stelle den Satz unterschiedlicher Objekte, die ungeordneter Natur sind Veränderlich
Gefrorenes Set Stellen Sie eine Klasse unveränderlicher Natur ein Unveränderlich
Dikt Wörterbuch oder assoziative Zuordnung Veränderlich