En Python, l'opérateur = est utilisé pour attribuer des valeurs aux variables.
a = 100
b = 200
print(a)
# 100
print(b)
# 200
Comme dans l'exemple ci-dessus, vous pouvez affecter des valeurs à plusieurs variables à la fois au lieu d'une à la fois, ce qui est pratique car cela ne nécessite qu'une simple ligne de code à écrire.
Les deux cas suivants sont décrits.
- Attribuer plusieurs valeurs à plusieurs variables
- Attribuer la même valeur à plusieurs variables
Attribuer plusieurs valeurs à plusieurs variables
Plusieurs valeurs peuvent être attribuées simultanément à plusieurs variables en séparant les variables et les valeurs par des virgules.
a, b = 100, 200
print(a)
# 100
print(b)
# 200
Trois variables ou plus, chacune d'un type différent, sont acceptables.
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 assignée comme un tuple.
a = 100, 200
print(a)
print(type(a))
# (100, 200)
# <class 'tuple'>
Si le nombre de variables à gauche ne correspond pas au nombre de valeurs à droite, il en résultera une erreur ValueError, mais le reste peut être attribué sous forme de liste en ajoutant un astérisque à 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 les astérisques et sur la manière d'affecter les éléments d'un tuple ou d'une liste à plusieurs variables, consultez l'article suivant.
- RELATION :Décompresser (développer et affecter à plusieurs variables) des tuples et des listes en Python
Attribuer la même valeur à plusieurs variables
La même valeur peut être assignée à plusieurs variables en utilisant = consécutivement. Ceci est utile pour initialiser plusieurs variables à la même valeur.
a = b = 100
print(a)
# 100
print(b)
# 100
Plus de 3 pièces sont acceptables.
a = b = c = 'string'
print(a)
# string
print(b)
# string
print(c)
# string
Après avoir attribué la même valeur, une autre valeur peut être attribuée à l'un d'entre eux.
a = 200
print(a)
# 200
print(b)
# 100
Faites attention lorsque vous assignez des objets mutables tels que des listes et des types de dictionnaires, plutôt que des objets immuables (non modifiables) tels que des entiers, des nombres à virgule flottante et des chaînes de caractères.
L'utilisation de = consécutivement signifie que toutes les variables pointent vers le même objet, donc si vous modifiez la valeur d'un élément ou ajoutez un nouvel élément, les autres changeront é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 que 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 traiter séparément, il suffit de les attribuer à chacun.
after c = []; d = [], c and d are guaranteed to refer to two different, unique, newly created empty lists. (Note that c = d = [] assigns the same object to both c and d.)
3. Data model — Python 3.10.4 Documentation
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]
Il existe également des méthodes pour générer des copies superficielles et profondes avec copy() et deepcopy() dans le module de copie.