Python: "Verkettete Definition" von Ints gegen Listen

8

Ich habe gerade in der Definition von Variablen in Python entdeckt. Nämlich:

%Vor%

gibt mir a=1 und b=0 oder a und b sind zwei unabhängige Variablen.

Aber:

%Vor%

gibt mir a = [0] und b = [0] , oder a und b sind zwei Referenzen auf das gleiche Objekt. Das ist verwirrend für mich, wie unterscheiden sich diese beiden Fälle? Liegt es daran, dass int primitive Typen sind oder weil Listen nur Zeiger sind?

    
Learning is a mess 23.04.2015, 14:03
quelle

2 Antworten

13

a und b zeigen immer auf das gleiche Objekt . Aber Sie können die ganze Zahl nicht ändern, sie ist unveränderlich.

In Ihrem ersten Beispiel müssen Sie Rebound a auf ein anderes Objekt zeigen. In dem anderen Beispiel haben Sie das nicht getan, Sie haben nie ein anderes Objekt a zugewiesen.

Stattdessen haben Sie das Objekt a Referenzen aufgefordert, sich selbst zu ändern, um diesem Objekt einen weiteren Eintrag hinzuzufügen. Alle anderen Verweise auf dasselbe Objekt ( list ) sehen diese Änderungen. Das liegt daran, dass list -Objekte veränderbar sind.

Ein korrekter Vergleich bestünde darin, a neu zuzuweisen, um auf ein neues Listenobjekt zu zeigen:

%Vor%

Nun rebound a und b verweist immer noch auf das erste Listenobjekt.

    
Martijn Pieters 23.04.2015, 14:06
quelle
1

Sie müssen verstehen, dass a und b einfach Referenzen sind, die auf eine anfänglich leere Liste zeigen:

%Vor%     
Malik Brahimi 23.04.2015 14:18
quelle

Tags und Links