Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
hätte da mal eine Verständnisfrage zu Listen und Dictionaries.
Was passiert bei folgendem Beispiel im Hintergrund mit "new_dict" wenn die Funktion zu Ende ist?
Wird "DATA" weiterhin permanent auf "{1: 'a', 2: 'b', 3: 'c'}" verweisen, oder wird das irgendwann gelöscht?
Gremlin hat geschrieben:Wird "DATA" weiterhin permanent auf "{1: 'a', 2: 'b', 3: 'c'}" verweisen, oder wird das irgendwann gelöscht?
Solange der Name `DATA` existiert, kann das zugrundeliegende Objekt nicht geloescht werden (wenn doch ist es ein Bug).
Warum denkst du, dass es anders laufen sollte? Nur weil in `a = b = list()` das Ergebnis zuerst an `b` gebunden wird, ist `b` nicht priviligierter als `a`: Das sind alles nur Namen.
@Dav1d
Dass ich keinen Zugriff mehr auf "new_dict" hätte weiß ich, ich wollte auf das hinaus was cofi geschrieben hat. Aber danke für die Alternative
@cofi
Danke, genau das wars. Wie ich darauf komme? Kam mir halt vorhin so in den Sinn als ich eben jenes Konstrukt im Begriff war zu erstellen. Und bevor ich irgendwas vermute frag ich dann doch mal lieber nach
cofi hat geschrieben:Nur weil in `a = b = list()` das Ergebnis zuerst an `b` gebunden wird, ist `b` nicht priviligierter als `a`: Das sind alles nur Namen.
Das stimmt doch so nicht, oder?
"d = d[0] = [42]" wäre doch da ein Gegenbeispiel? ( und bei "d[0] = d = [42]" wird d zu [42])
/klugscheiß,
Jörg
ps.: habe ich aber auch erst vor kurzem auf comp.lang.python gesehen.
@b.esser-wisser: Das `a` und `b` nur Namen sind stimmt schon. Du verwendest ja nicht einfach nur Zuweisungen an Namen sondern *veränderst* Objekte, denn da werden ja Methoden auf den Objekten aufgerufen -- `__setitem__()` nämlich. Bei Seiteneffekten kann die Reihenfolge natürlich eine Rolle spielen.