Aller au contenu

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 :

affectation

Deux affectations, une étiquette

On considère le code ci-dessous :

1
2
a = 3
a = a + 6

Que se passe-t-il en mémoire ?

  • En ligne 1, création d'un objet de type int dont la valeur est 3, auquel on attribue une « étiquette » (un nom) a :

    affectation

  • En ligne 2, création d'un nouvel objet de type int dont la valeur est celle de a (3) augmentée de 6. On attribue à ce nouvel objet l'étiquette a :

    affectation

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
a = 3
b = a + 6

Que se passe-t-il en mémoire ?

  • En ligne 1, création d'un objet de type int dont la valeur est 3, auquel on attribue une étiquette a :

    affectation

  • En ligne 2, création d'un nouvel objet de type int dont la valeur est celle de a (3) augmentée de 6. On attribue à ce nouvel objet l'étiquette b :

    affectation

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
a = 3
b = a

Que se passe-t-il en mémoire ?

  • En ligne 1, création d'un objet de type int dont la valeur est 3, auquel on attribue une étiquette a :

    affectation

  • En ligne 2, ajout d'une étiquette b sur l'objet existant :

    affectation