


Warum teilen leere Tupel, Wörterbücher und Listen Speicheradressen in CPython und warum hat dies nichts mit Veränderlichkeit zu tun?
Warum teilen leere Tupel, Wörterbücher und Listen Speicheradressen in CPython?
In CPython teilen sich leere Container (Tupel, Wörterbücher usw.). Listen) zeigen ein besonderes Verhalten hinsichtlich ihrer Objektidentifikatoren. Insbesondere haben leere Tupel wie () und leere Wörterbücher wie {} dieselbe Speicheradresse, und leere Listen wie [] haben ebenfalls eine gemeinsame Adresse.
Erklärung
Wenn id({}) oder id([]) in CPython aufgerufen wird, wird ein temporärer Container erstellt und an die ID-Funktion übergeben. Bevor die Funktion diesen temporären Container jedoch verarbeitet, wird dessen Speicheradresse erfasst und weitergegeben. Der temporäre Container wird dann verworfen, sodass nur seine Speicheradresse zurückbleibt.
Wenn anschließend ein weiterer Aufruf von id({}) oder id([]) erfolgt, bevor andere Container erstellt werden, wird dieselbe Speicheradresse verwendet wird voraussichtlich dem neuen temporären Container zugewiesen. Der Speicherzuweiser von CPython weist häufig Speicherblöcke nacheinander zu, was dieses Szenario sehr wahrscheinlich macht.
Da die Funktion „id“ auf Speicheradressen zur Objektidentifizierung basiert, folgt daraus, dass id({}) == id({}) und id([]) == id([]) gelten als wahr. Dieses Verhalten tritt nur während der vorübergehenden Existenz dieser leeren Behälter auf und weist nicht darauf hin, dass die Behälter irgendwelche inhärenten Eigenschaften gemeinsam haben.
Unterscheidung von Veränderlichkeit
Veränderlichkeit ist keine direkte Eigenschaft Faktor für dieses Phänomen. Es ist jedoch wichtig zu beachten, dass veränderliche Objekte wie Listen nicht wie unveränderliche Objekte wie Tupel und Zeichenfolgen zwischengespeichert oder wiederverwendet werden können. Folglich ist id(x) != id(y) für zwei beliebige veränderbare Objekte, auch wenn sie identische Elemente enthalten.
Signifikanz
Die ID eines Objekts ist nur einzigartig für seine Lebenszeit. Nachdem ein Objekt zerstört wurde oder bevor es erstellt wurde, kann ein anderes Objekt dieselbe ID erhalten.
Das obige ist der detaillierte Inhalt vonWarum teilen leere Tupel, Wörterbücher und Listen Speicheradressen in CPython und warum hat dies nichts mit Veränderlichkeit zu tun?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

So verwenden Sie Python, um die ZiPF -Verteilung einer Textdatei zu finden

So herunterladen Sie Dateien in Python

Wie benutze ich eine schöne Suppe, um HTML zu analysieren?

Wie man mit PDF -Dokumenten mit Python arbeitet

Wie kann man mit Redis in Django -Anwendungen zwischenstrichen

Einführung des natürlichen Sprach -Toolkits (NLTK)

Wie führe ich ein tiefes Lernen mit Tensorflow oder Pytorch durch?
