Skip to content

Assignation multiple en Python : Assignez plusieurs valeurs ou la même valeur à plusieurs variables

En Python, utilisez l’opérateur = pour attribuer des valeurs aux variables.

a = 100
b = 200

print(a)
# 100

print(b)
# 200

Vous pouvez affecter des valeurs à plusieurs variables sur une seule ligne.

Cet article décrit les deux cas suivants.

  • Affecter plusieurs valeurs à plusieurs variables
  • Affecter la même valeur à plusieurs variables

Affecter plusieurs valeurs à plusieurs variables

Vous pouvez affecter plusieurs valeurs à plusieurs variables en séparant les variables et les valeurs par des virgules ,.

a, b = 100, 200

print(a)
# 100

print(b)
# 200

Vous pouvez affecter à plus de trois variables. Il est également possible d’affecter à différents types.

a, b, c = 0.1, 100, 'string'

print(a)
# 0.1

print(b)
# 100

print(c)
# string

S’il y a une variable sur le côté gauche, elle est affectée en tant que tuple.

a = 100, 200

print(a)
print(type(a))
# (100, 200)
# <class 'tuple'>

Si le nombre de variables à gauche et le nombre de valeurs à droite ne correspondent pas, une ValueError se produira, mais vous pouvez affecter le reste sous forme de liste en ajoutant * au nom de la variable.

# a, b = 100, 200, 300
# ValueError: too many values to unpack (expected 2)

# a, b, c = 100, 200
# ValueError: not enough values to unpack (expected 3, got 2)

a, *b = 100, 200, 300

print(a)
print(type(a))
# 100
# <class 'int'>

print(b)
print(type(b))
# [200, 300]
# <class 'list'>

*a, b = 100, 200, 300

print(a)
print(type(a))
# [100, 200]
# <class 'list'>

print(b)
print(type(b))
# 300
# <class 'int'>

Pour plus d’informations sur * et sur la manière d’affecter des éléments d’un tuple et d’une liste à plusieurs variables, consultez l’article suivant.

Il est également possible d’échanger les valeurs de plusieurs variables de la même manière. Voir l’article ci-dessous.

Affecter la même valeur à plusieurs variables

Vous pouvez attribuer la même valeur à plusieurs variables en utilisant = consécutivement.

Ceci est utile, par exemple, lors de l’initialisation de plusieurs variables à la même valeur.

a = b = 100

print(a)
# 100

print(b)
# 100

Il est également possible d’attribuer une autre valeur dans une après avoir attribué la même valeur. Comme décrit plus loin, des précautions doivent être prises lors de l’affectation d’objets modifiables tels que des listes ou des dictionnaires.

a = 200

print(a)
# 200

print(b)
# 100

Même trois ou plus peuvent être écrits de la même manière.

a = b = c = 'string'

print(a)
# string

print(b)
# string

print(c)
# string

Soyez prudent lorsque vous affectez des objets modifiables tels que list ou dict au lieu d’objets immuables tels que int, float ou str.

Si vous utilisez = consécutivement, le même objet est affecté à toutes les variables, donc si vous modifiez la valeur de l’élément ou ajoutez un nouvel élément, l’autre changera également.

a = b = [0, 1, 2]

print(a is b)
# True

a[0] = 100
print(a)
# [100, 1, 2]

print(b)
# [100, 1, 2]

Idem ci-dessous.

b = [0, 1, 2]
a = b

print(a is b)
# True

a[0] = 100
print(a)
# [100, 1, 2]

print(b)
# [100, 1, 2]

Si vous souhaitez les gérer séparément, vous devez les affecter à chacun.

après c = [] ; d = [], c et d font référence à deux listes vides différentes, uniques et nouvellement créées. (Notez que c = d = [] affecte le même objet à la fois à c et à d.)
3. Modèle de données — Documentation Python 3.8.0

a = [0, 1, 2]
b = [0, 1, 2]

print(a is b)
# False

a[0] = 100
print(a)
# [100, 1, 2]

print(b)
# [0, 1, 2]

Vous pouvez également utiliser copy() ou deepcopy() du module de copie pour faire des copies superficielles et profondes. Voir l’article suivant.