
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.