Maison  >  Article  >  développement back-end  >  Comment fonctionnent les affectations chaînées en Python et quels sont les pièges potentiels liés à l'utilisation d'objets mutables ?

Comment fonctionnent les affectations chaînées en Python et quels sont les pièges potentiels liés à l'utilisation d'objets mutables ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-27 10:10:03916parcourir

How do chained assignments work in Python, and what are the potential pitfalls when dealing with mutable objects?

Comment fonctionnent les affectations chaînées ?

Une affectation chaînée en Python, telle que :

x = y = somefunction()

est équivalent aux deux instructions suivantes exécutées séquentiellement :

temp = somefunction()
x = temp
y = temp

Cela signifie que l'expression à droite de l'opérateur d'affectation est évaluée en premier, et la valeur résultante est ensuite attribuée à tous les variables sur le côté gauche, de gauche à droite.

Par exemple, le code suivant imprimera le nombre 10 deux fois :

def somefunction():
    return 10

x = y = somefunction()
print(x)
print(y)

Il est important de noter que les affectations chaînées peuvent être problématique lorsqu'il s'agit d'objets mutables, tels que des listes. Par exemple, le code suivant attribue la même liste vide à x et y :

x = y = []

x.append(1)

print(x)
print(y)

Cela affichera [1, 1] car x et y font référence à la même liste. Si vous aviez l'intention de créer deux listes distinctes, vous devez plutôt écrire :

x = []
y = []

x.append(1)

print(x)
print(y)

Cela affichera [1] et [] car x et y font référence à des listes différentes.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn