Skip to content

L'affectation, suite

a = valeur, b = valeur

Pour les objets "construits" plus complexes que les objets de type simple, on observera les différences ci-dessous.

Pour les entiers:

1
2
3
4
5
6
7
8
>>> id(2)
94120406455200
>>> a = 2
>>> id(2)
94120406455200
>>> b = 2
>>> id(b)
94120406455200

on a le schéma:

ou avec des caractères:

1
2
3
4
5
6
7
8
>>> id('a')
140209082566336
>>> a = 'a'
>>> id(a)
140209082566336
>>> b = 'a'
>>> id(b)
140209082566336

schéma:

Par contre:

1
2
3
4
5
6
>>> a = [3, 6, 7]
>>> id(a)
140209062504200
>>> b = [3, 6, 7]
>>> id(b)
140209062504584

L'identifiant de a et b n'est pas le même. Nous avons le schéma:

Nous pouvons interpréter cela par le fait que les objets simples "préexistent" tandis que les objets plus complexes comme les listes sont construits à la demande. Les listes a et b sont donc bien deux objets distincts.

Important

Pour simplifier, vous pouvez ne retenir que le comportement du cas "objet complexe", c'est à dire retenir que

1
2
a = valeur
b = valeur 
crée deux objets distincts, avec le schéma:

En effet, nous verrons avec la notion de "muable", "immuable" que nous pouvons considérer que le comportement est toujours celui-là, y compris pour les objets simples comme les objets de type int.

a = valeur, b = a

Par contre, et cela est important dans la pratique, nous avons:

1
2
3
4
5
6
7
8
9
>>> a = [3, 8, 9]
>>> id(a)
140209083017160
>>> b = a
>>> id(b)
140209083017160
>>> c = b 
>>> id(c)
140209083017160

Une affectation b = a, quelque soit le type d'objet, revient à donner une seconde étiquette à l'objet ciblé par a.