Dieses Mal ist es ein Experiment, einen genaueren Blick darauf zu werfen, worauf die Variablen hinweisen. Die Version von Python ist 3.4.3.
Selbst wenn Sie den Inhalt einer Variablen einer anderen Variablen zuweisen, zeigt sie auf dasselbe Objekt. Überprüfen Sie dies, indem Sie die Objekt-IDs vergleichen.
mylist = [[0, "mike"], [1, "jane"]]
person1 = mylist[0]
print("mylist = %s" % mylist)
print("person1 = %s" % person1)
# =>
# mylist = [[0, 'mike'], [1, 'jane']]
# person1 = [0, 'mike']
#Stellen Sie sicher, dass die beiden Variablen auf dasselbe Objekt zeigen
print("mylist[0] id = %s" % id(mylist[0]))
print("person1 id = %s" % id(person1))
print(id(mylist[0]) == id(person1))
# => True
#Speichern Sie die aktuelle Objekt-ID zur späteren Bestätigung
person1_id = id(person1)
Versuchen Sie, die Elemente des Arrays durch eine andere Variable zu ändern. Nur wenn ein Index angegeben ist
#Person ist meine Liste[0]Stellen Sie sicher, dass es sich um einen Alias für handelt
person1[0] = 100
print("mylist = %s" % mylist)
print("person1 = %s" % person1)
# =>
# mylist = [[100, 'mike'], [1, 'jane']]
# person1 = [100, 'mike']
Das Element wurde erfolgreich geändert. Wenn Sie jedoch keine Indizes verwenden, können Sie das Element nicht ändern, und ein neues Objekt wird zugewiesen.
#durch pesron1 mylist[1]Versuchen Sie, die Reihenfolge von zu ändern
person1 = [5, "michel"]
print("mylist = %s" % mylist)
print("person1 = %s" % person1)
# =>
# mylist = [[100, 'mike'], [1, 'jane']]
# person1 = [5, 'michel']
person1 = 5
print("mylist = %s" % mylist)
print("person1 = %s" % person1)
# =>
# mylist = [[100, 'mike'], [1, 'jane']]
# person1 = 5
Wenn Sie es mit der Objekt-ID vergleichen, als die Elemente des vorherigen Arrays enthalten waren, können Sie sehen, dass sich das Objekt sicherlich geändert hat.
#Vergleichen Sie mit der ID, bevor Sie das Objekt ändern
print(person1_id == id(person1))
# => False
Lassen Sie uns das obige Phänomen veranschaulichen. Erstens werden Indizes verwendet. Beachten Sie, dass sich die Indizes nicht auf das Array (in diesem Fall Liste) beziehen, sondern auf seine Elemente. Da wir nur die Referenz (Pfeil) des Elements des Arrays geändert haben, bleiben die Variablen, die auf das Array verweisen, dieselben wie die Referenz auf das Array.
Weiter ist der Fall ohne Indizes. Im vorherigen Experiment hatte das Ändern des Werts von einer anderen Variablen in diesem Fall keine Auswirkungen auf die ursprüngliche Variable. Dies liegt daran, dass ich den Verweis auf das Array in den Verweis auf das neue Objekt geändert habe.
Recommended Posts