Comportement en mémoire☘
L'instruction d'affectation a = 3
indique qu'il faut créer un objet de type int
(entier), dont la valeur est 3 (on commence par la droite) et sur lequel on « colle » l'étiquette a
. On peut schématiser ainsi :
Deux affectations, une étiquette☘
On considère le code ci-dessous :
1 2 |
|
Que se passe-t-il en mémoire ?
-
En ligne 1, création d'un objet de type
int
dont la valeur est3
, auquel on attribue une « étiquette » (un nom)a
: -
En ligne 2, création d'un nouvel objet de type
int
dont la valeur est celle dea
(3) augmentée de 6. On attribue à ce nouvel objet l'étiquettea
:
Remarque
Pour mieux comprendre, on a continué à représenté la première boîte. En fait, comme cette boîte ne porte plus d'étiquette, elle n'est plus accessible par le programmeur : tout se passe donc comme si elle n'existait plus.
Deux affectations, deux étiquettes☘
On considère le code ci-dessous :
1 2 |
|
Que se passe-t-il en mémoire ?
-
En ligne 1, création d'un objet de type
int
dont la valeur est3
, auquel on attribue une étiquettea
: -
En ligne 2, création d'un nouvel objet de type
int
dont la valeur est celle dea
(3) augmentée de 6. On attribue à ce nouvel objet l'étiquetteb
:
Dans ce cas, les deux boîtes ont toujours une étiquette : elles sont toutes les deux accessibles.
Deux étiquettes, un seul objet☘
En python, lorsqu'il n'y a pas de calcul dans la partie droite de l'affectation, il n'y a pas de création d'un nouvel objet mais un simple ajout d'une étiquette à l'objet.
On considère le code ci-dessous :
1 2 |
|
Que se passe-t-il en mémoire ?
-
En ligne 1, création d'un objet de type
int
dont la valeur est3
, auquel on attribue une étiquettea
: -
En ligne 2, ajout d'une étiquette
b
sur l'objet existant :