La manipulation d'objets mutables en Python peut parfois prêter à confusion

#122 - a = a + b et a += b ne sont pas identiques !

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

Les identifiants sont également différents

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.

Ça t'a plu ? 😎

Connexion ou S'abonner pour participer aux sondages.

Reply

or to participate.