class Car:
def __init__(self, color):
self.color = color
= Car("red")
my_car print(my_car.color) # Affiche 'red'
= "blue" # Modification de l'attribut 'color'
my_car.color print(my_car.color) # Affiche 'blue'
red
blue
Remi Genet
2024-03-04
La mutabilité en Python fait référence à la capacité d’un objet à être modifié après sa création. Dans Python, certains types de données sont mutables, tandis que d’autres sont immutables.
int
), les nombres à virgule flottante (float
), les chaînes de caractères (str
), et les tuples (tuple
).list
), les dictionnaires (dict
), et les ensembles (set
) sont des exemples de types mutables.Types Immutables
Types Mutables
Le scope en Python fait référence à la portée dans laquelle les variables sont visibles et accessibles. Il détermine la visibilité d’une variable au sein du code.
print
, len
.global
Keyword : Permet de modifier une variable globale à l’intérieur d’une fonction.nonlocal
Keyword : Utilisé dans les fonctions imbriquées pour modifier une variable dans le scope englobant.Exemple 2: Scope en Python
Car
avec un attribut color
peut voir sa couleur modifiée après la création de l’objet.Exemple 3: Classes et Mutabilité
class Car:
def __init__(self, color):
self.color = color
my_car = Car("red")
print(my_car.color) # Affiche 'red'
my_car.color = "blue" # Modification de l'attribut 'color'
print(my_car.color) # Affiche 'blue'
red
blue
def add_to_list(element, target_list=[]): # Liste mutable comme argument par défaut
target_list.append(element)
return target_list
print(add_to_list(1)) # Affiche [1]
print(add_to_list(2)) # Affiche [1, 2] - L'effet de bord se produit ici
[1]
[1, 2]
deepcopy
) et copie superficielle (copy
) est essentielle lors de la manipulation d’objets mutables.import copy
original_list = [[1, 2, 3], [4, 5, 6]]
# Copie superficielle
shallow_copied_list = copy.copy(original_list)
shallow_copied_list[0][0] = "X"
print(original_list) # Affecte la liste originale
# Copie profonde
deep_copied_list = copy.deepcopy(original_list)
deep_copied_list[0][0] = "Y"
print(original_list) # Ne change pas la liste originale
[['X', 2, 3], [4, 5, 6]]
[['X', 2, 3], [4, 5, 6]]
La compréhension de la mutabilité et du scope en Python est fondamentale pour écrire un code clair, efficace et sans erreurs. Bien que la mutabilité offre de la flexibilité, elle doit être utilisée judicieusement pour éviter des complications inutiles. La maîtrise du scope aide à structurer le code de manière logique et à éviter les conflits de noms et les erreurs inattendues.