- Mon Shot de Data Science
- Posts
- La manipulation d'objets mutables en Python peut parfois prêter à confusion
La manipulation d'objets mutables en Python peut parfois prêter à confusion
#122 - a = a + b et a += b ne sont pas identiques !
Savais-tu qu'avec les objets mutables, a +=
et a = a +
fonctionnent différemment en Python ? Voici pourquoi.
Prenons l'exemple d'une liste.
Lorsque nous utilisons l'opérateur =
, Python crée un nouvel objet en mémoire et l'affecte à la variable.
Ainsi, toutes les autres variables font toujours référence à l'emplacement mémoire précédent, qui n'a jamais été mis à jour. C'est ce que montre le fichier methode1.py ci-dessus.
Mais avec l'opérateur +=
, les changements sont appliqués in-place. Cela signifie que Python ne crée pas de nouvel objet et que le même emplacement mémoire est mis à jour.
Ainsi, les changements sont visibles à travers toutes les autres variables qui référencent le même emplacement. C'est ce que montre le fichier methode2.py ci-dessus.
Nous pouvons également le vérifier en comparant la pré-affectation et la post-affectation de id()
.
Avec a = a +
, le id est modifié, ce qui indique que Python a créé un nouvel objet. Cependant, avec a +=
, le id reste le même. Cela indique que le même emplacement mémoire a été mis à jour.
Notebook de la démonstration de manipulation et modification d’objets mutables en Python.
Ça t'a plu ? 😎 |
Reply