Python id()
Die Python-Funktion id() gibt die "Identität" des Objekts zurück. Die Identität eines Objekts ist eine Ganzzahl, die garantiert eindeutig und konstant für dieses Objekt während seiner Lebensdauer ist. Zwei Objekte mit nicht überlappenden Lebensdauern können denselben id()-Wert haben. In der CPython-Implementierung ist dies die Adresse des Objekts im Speicher.
Python id()
Python speichert den id() Wert von häufig verwendeten Datentypen wie String, Integer, Tuples usw. Daher kann es sein, dass mehrere Variablen auf dasselbe Objekt verweisen und denselben id() Wert haben, wenn ihre Werte identisch sind. Lassen Sie uns dies mit einem Beispiel überprüfen.
integers
a = 10
b = 10
c = 11
d = 12
print(id(a))
print(id(b))
print(id(c))
print(id(d))
Ausgabe :
4317900064
4317900064
4317900096
4317900128
Beachten Sie, dass der id()-Wert von 'a' und 'b' gleich ist, sie haben den gleichen ganzzahligen Wert. Lassen Sie uns sehen, ob wir ein ähnliches Verhalten auch mit Strings und Tupeln erhalten?
tuples
t = ('A', 'B')
print(id(t))
t1 = ('A', 'B')
print(id(t1))
strings
s1 = 'ABC'
s2 = 'ABC'
print(id(s1))
print(id(s2))
Ausgabe :
4320130056
4320130056
4320080816
4320080816
Aus der Ausgabe geht hervor, dass Python die Zeichenfolgen und Tupel-Objekte zwischenspeichert und sie verwendet, um Speicherplatz zu sparen.
Caching kann nur mit unveränderlichen Objekten funktionieren. Beachten Sie, dass Ganzzahlen, Strings und Tupel unveränderlich sind. Daher kann die Python-Implementierung Caching nutzen, um Speicherplatz zu sparen und die Leistung zu verbessern.
Wir wissen, dass ein Wörterbuch nicht unveränderlich ist. Lassen Sie uns sehen, ob id() unterschiedlich ist für verschiedene Wörterbücher, auch wenn die Elemente gleich sind?
dict
d1 = {"A": 1, "B": 2}
d2 = {"A": 1, "B": 2}
print(id(d1))
print(id(d2))
Ausgabe :
4519884624
4519884768
Wie wir dachten, geben dict-Objekte unterschiedliche id()-Werte zurück und es scheint hier keine Speicherung zu geben.
Python id() für benutzerdefiniertes Objekt
Lass uns ein einfaches Beispiel ansehen, wie man den id() Wert für ein benutzerdefiniertes Objekt erhält.
class Emp:
a = 0
e1 = Emp()
e2 = Emp()
print(id(e1))
print(id(e2))
Ausgabe :
4520251744
4520251856
Zusammenfassung
Der Python-Wert id() ist garantiert einzigartig und konstant für ein Objekt. Wir können dies verwenden, um sicherzustellen, dass zwei Objekte sich auf dasselbe Objekt im Speicher beziehen oder nicht.
Sie können das vollständige Python-Skript und weitere Python-Beispiele aus unserem GitHub-Repository abrufen.
Referenz: Offizielle Dokumentation
