Notes d'étude pour First Python 3rd Edition
--Python sans déclaration de type --Référence partagée
a = 3
--Tous remplacés par l'objet correspondant
a = 3
b = a
Comment est-ce
De cette façon, ** une situation où plusieurs variables sont des références au même objet ** est appelée une ** référence partagée **.
Ensuite, ajoutez une ligne au code précédent
a = 3
b = a
a = 'spam'
C'est comme ça La variable a sert de référence à l'objet string nouvellement créé "pam", mais la variable b reste une référence à l'objet 3.
Une liste est un tableau d'objets entre crochets qui peuvent être écrasés.
Dans l'exemple ci-dessous, L2 reste une référence à «[2, 3, 4]»
L1 = [2, 3, 4]
L2 = L1
L1 = 24
Dans l'exemple suivant, la valeur de l'objet de référence est écrasée.
#Objet variable
>>> L1 = [2, 3, 4]
#Faire une autre référence au même objet
>>> L2 = L1
#Écraser les éléments
>>> L1[0] = 24
#Des modifications ont été apportées à la liste correspondant à L1
>>> L1
[24, 3, 4]
#Cela affecte également L2!
>>> L2
[24, 3, 4]
Si vous copiez par la méthode suivante, L2 ne sera pas modifié et ** 2 variables indiqueront différentes zones de mémoire **
#Objet variable
>>> L1 = [2, 3, 4]
#Faire une copie de L1
>>> L2 = L1[:]
#Écraser les éléments
>>> L1[0] = 24
#Des modifications ont été apportées à la liste correspondant à L1
>>> L1
[24, 3, 4]
#L2 ne change pas
>>> L2
[2, 3, 4]
>>> x = 42
#Le 42 sera-t-il bientôt détruit?
>>> x = 'shrubbery'
** En Python, les petits entiers et les chaînes avec un petit nombre de caractères sont mis en cache et réutilisés **
>>> L = [1, 2, 3]
#M et L sont des références pour le même objet
>>> M = L
#Comparaison de savoir si les deux sont "équivalents"
>>> L == M
True
#Comparaison de savoir s'ils sont "identiques"
>>> L is M
True
>>> L = [1, 2, 3]
#Les objets auxquels M et L correspondent sont différents
>>> M = [1, 2, 3]
#Les deux valeurs sont les mêmes
>>> L == M
True
#Deux objets sont équivalents mais pas identiques
>>> L is M
False
--Dans les cas suivants, X et Y sont équivalents mais pas identiques
>>> X = 42
#Les deux 42 ne devraient pas être les mêmes
>>> Y = 42
>>> X == Y
True
#Les deux seront les mêmes car ils seront mis en cache!
>>> X is Y
True
Recommended Posts