Maison > Article > développement back-end > Quelle est la différence entre `list.__iadd__` et `list.__add__` et pourquoi cela conduit-il à des résultats différents lors de la modification de listes en Python ?
Comprendre les différences entre list.__iadd__ et list.__add__
En Python, les objets peuvent définir des méthodes « magiques » spéciales pour prendre en charge leur interaction avec certains opérateurs. Deux de ces méthodes sont iadd et __add__, utilisées respectivement pour les opérations d'addition sur place et régulières.
Considérez les deux extraits de code suivants :
<code class="python"># Example 1 x = y = [1, 2, 3, 4] x += [4] print(x) # [1, 2, 3, 4, 4] print(y) # [1, 2, 3, 4, 4] # Example 2 x = y = [1, 2, 3, 4] x = x + [4] print(x) # [1, 2, 3, 4, 4] print(y) # [1, 2, 3, 4]</code>
Pourquoi ces deux exemples se comportent différemment ?
Dans les deux cas, on part de deux listes identiques, x et y, et on effectue une opération d'addition en utilisant soit x = [4] soit x = x [4].
Lors de l'utilisation de x = [4], la méthode __iadd__ de Python est appelée, qui effectue une addition sur place. Cela signifie que la liste x originale est mutée et son contenu est mis à jour avec les éléments de la liste [4]. En conséquence, x et y contiennent désormais la même liste modifiée.
En revanche, lors de l'utilisation de x = x [4], la méthode __add__ de Python est appelée, qui renvoie une nouvelle liste contenant les éléments des deux x et [4]. La liste d'origine x reste inchangée et y pointe toujours vers la liste initiale non modifiée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!