Comment l'opérateur = fonctionne sur les listes en Python
L'opérateur = en Python présente un comportement inattendu lorsqu'il est appliqué aux listes. Ce comportement est attribué à la distinction entre les méthodes spéciales iadd et add.
iadd vs ajouter
Comportement sur les listes
Lorsque = est utilisé sur une liste avec une méthode iadd, la liste est modifié sur place. Si iadd n'est pas défini, add est invoqué, ce qui entraîne une nouvelle liste.
Exemple
Considérez ce qui suit code :
class foo: bar = [] def __init__(self, x): self.bar += [x] class foo2: bar = [] def __init__(self, x): self.bar = self.bar + [x] f = foo(1) g = foo(2) print(f.bar) print(g.bar) f.bar += [3] print(f.bar) print(g.bar) f.bar = f.bar + [4] print(f.bar) print(g.bar) f = foo2(1) g = foo2(2) print(f.bar) print(g.bar)
Sortie
[1, 2] [1, 2] [1, 2, 3] [1, 2, 3] [1, 2, 3, 4] [1, 2, 3] [1] [2]
Explication
Conclusion
Le comportement de = sur les listes dépend du fait qu'il appelle ou non iadd ou add__. La modification sur place se produit avec __iadd__, tandis que __add crée une nouvelle liste.
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!