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 |
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.