Avatar ·

Was ist ein Objekt in Python. Warum ist id(a) == id(b) == id(1)?

📁 Python, Beispiel, KI, Buch, Arbeit

"

Ich präzisiere die Frage.
In Python-Büchern steht, dass in Python alles ein Objekt ist.

Nehmen wir den traditionellen Ansatz zum Erlernen/Lehren von Programmiersprachen. Die Sprachen Pascal, C, C++ haben das Konzept eines ""Variablennamens"" (Bezeichners). Einem Variablennamen wird ein Wert zugewiesen/verknüpft. Der Wert wird im Speicher gespeichert. Der Variablenname ist eine Möglichkeit (im Quelltext des Programms), auf die Speicherzelle zuzugreifen, um den dort gespeicherten Wert zu erhalten.

Ich weiß nicht, ob die Aussage (für kompilierte Sprachen) korrekt ist: Bei Variablen, z.B. vom Typ Integer, arbeitet der Prozessor zur Laufzeit des Programms auf dem Computer bereits mit den Adressen der Speicherzellen, in denen die Werte der Variablen gespeichert sind. D.h. es gibt nicht so etwas, dass irgendwo unter einer bestimmten Adresse der Variablenname gespeichert ist und dieser mit der Adresse der Zelle verknüpft wird, in der

Avatar ·

"

Zu verschiedenen Zeiten kann demselben Objekt ein unterschiedliches anderes Objekt zugeordnet sein.

Sie wollten sagen: zu verschiedenen Zeiten kann derselbe Name auf unterschiedliche Objekte verweisen

Das Modell in Python ist einfach — es ist überhaupt nicht nötig zu wissen, was eine Adresse, eine Speicherzelle oder ein Pointer ist. Es reicht aus, nur über Namen und die Objekte Bescheid zu wissen, an die sie gebunden sind.

Hier: Labels und Bälle sind ausreichend, um jedes Verhalten auf Python-Ebene zu erklären — zunächst glaubt man nicht, dass ein so einfaches Modell alle Grenzfälle abdeckt.

denn a, b, 1 sind doch unterschiedliche Objekte?

Sie haben nur ein Objekt (die Eins). Kleine Integer werden in CPython gecached. Unterschiedliche Namen a, b verweisen auf dasselbe Objekt: a is b

Anmelden um eine Antwort zu hinterlassen

Blogs