Lorsqu'ils sont décrits comme suit, a et b semblent pointer exactement vers le même objet (2 dans ce cas).
a = 2
b = 2
Exactement le même. * "Le même objet" * en anglais. J'avais beaucoup de questions, alors j'ai cherché. Commençons par énumérer les questions.
Si vous y réfléchissez, c'est ce que j'ai recherché dans l'article précédent.
Pour résumer brièvement
Si le même objet existe déjà
Reportez-vous à ce même objet pour économiser de la mémoire.
Si le même objet n'existe pas, il sera nouvellement créé.
En d'autres termes, si a = 3
est nouvellement entré, un nouvel objet sera créé. Et est-ce que `` b = 2 '' est sauvegardé tel quel?
Bien sûr, puisqu'il s'agit d'une rédaction de mémos pour débutants, des choses plus compliquées peuvent se produire dans la partie fondamentale, mais cette définition peut l'expliquer sans aucune contradiction, donc je vais procéder comme c'est pour le moment.
Pour voir si c'est vrai, regardez ce qu'on appelle une adresse d'espace mémoire à l'aide de la fonction id que vous pouvez voir directement.
Comme vous pouvez le voir en examinant id (), il semble que la valeur d'identification soit utilisée comme valeur de retour. En d'autres termes, s'ils pointent vers le même objet, la valeur de retour est la même, et s'ils sont différents, la valeur de retour est également différente.
Maintenant, voyons si ça appartient vraiment à *** ensemble ***.
test.py
a = 2
b = 2
id(a) #4401166416
id(b) #4401166416
id(a) == id(b) #Vrai c'est compliqué de voir les chiffres==J'ai essayé de l'utiliser.
Apparemment, c'est probable. En d'autres termes, les règles lors de la création d'un nouvel objet seront les suivantes.
Toujours méfiant, Kan Chin a défini un nouveau `` c = 3 '' et a tenté une autre expérience.
test.py
c = 3
id(c) #4401166448
id(a) == id(c) #False
#Après cela, réécrivez a en 3 et vérifiez s'il est identique à c.
a = 3
id(a) #4401166448
id(a) == id(c) #True
Et sont devenus ensemble à merveille. En d'autres termes
Si le même objet existe
Aucun nouvel objet n'est créé.
On dirait. (* Certaines corrections ont été apportées au post-scriptum)
Je ne sais pas à quoi cela sert, mais le contenu est étrange et intéressant.
Une telle méthode de conception est appelée un modèle Flyweight (il est "fly grade" car il consomme moins de mémoire). Pour votre information.
... Apparemment ... Merci beaucoup.
Apparemment, si la valeur est grande, un nouvel objet sera créé même si la valeur est exactement la même.
Voici ce que j'ai essayé de faire.
test
d = 50000
e = 50000
id(d) #4406088592
id(e) #4404350832
id(d) == id(e) #False
Il est étonnamment intéressant de voir comment le contenu du système est stocké.
Recommended Posts