Cette fois, il s'agit d'une expérience pour examiner de plus près ce que les variables indiquent. La version de python est la 3.4.3.
Même si vous affectez le contenu d'une variable à une autre variable, elle pointe vers le même objet. Vérifiez cela en comparant les identifiants des objets.
mylist = [[0, "mike"], [1, "jane"]]
person1 = mylist[0]
print("mylist = %s" % mylist)
print("person1 = %s" % person1)
# =>
# mylist = [[0, 'mike'], [1, 'jane']]
# person1 = [0, 'mike']
#Assurez-vous que les deux variables pointent vers le même objet
print("mylist[0] id = %s" % id(mylist[0]))
print("person1 id = %s" % id(person1))
print(id(mylist[0]) == id(person1))
# => True
#Enregistrer l'identifiant de l'objet actuel pour confirmation ultérieure
person1_id = id(person1)
Essayez de changer les éléments du tableau via une autre variable. Uniquement lorsqu'un indice est spécifié
#la personne est ma liste[0]Assurez-vous qu'il s'agit d'un alias pour
person1[0] = 100
print("mylist = %s" % mylist)
print("person1 = %s" % person1)
# =>
# mylist = [[100, 'mike'], [1, 'jane']]
# person1 = [100, 'mike']
L'élément a été modifié avec succès. Cependant, si vous n'utilisez pas d'indices, vous ne pouvez pas modifier l'élément et un nouvel objet est attribué.
#via pesron1 mylist[1]Tentative de modification de la séquence
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
Si vous le comparez avec l'ID de l'objet lorsque les éléments du tableau précédent ont été inclus, vous pouvez voir que l'objet a certainement changé.
#Comparer avec l'ID avant de changer d'objet
print(person1_id == id(person1))
# => False
Illustrons le phénomène ci-dessus. Le premier est le cas de l'utilisation d'indices. Notez que les indices ne font pas référence au tableau (liste dans ce cas), mais à ses éléments. Puisque nous avons seulement changé la référence (flèche) de l'élément du tableau, les variables qui faisaient référence au tableau restent les mêmes que la référence au tableau.
Vient ensuite le cas sans indices. Dans l'expérience précédente, dans ce cas, la modification de la valeur d'une autre variable n'affectait pas la variable d'origine. C'est parce que j'ai changé la référence au tableau en référence au nouvel objet.
Recommended Posts