Qu'est-ce qu'un objet mutable ?
Mutable en Python peut être défini comme un objet qui peut changer ou être considéré comme quelque chose de changeable par nature. Mutable signifie la possibilité de modifier ou d'éditer une valeur.
Les objets mutables en Python permettent aux programmeurs d'avoir des objets qui peuvent modifier leurs valeurs. Ils sont généralement utilisés pour stocker une collection de données. Cela peut être considéré comme quelque chose qui a muté et l’état interne applicable au sein d’un objet a changé.
Que sont les objets immuables ?
Les objets immuables en Python peuvent être définis comme des objets dont les valeurs et les attributs ne changent pas au fil du temps.
Ces objets deviennent permanents une fois créés et initialisés, et constituent un élément essentiel des structures de données utilisées en Python.
Python est utilisé en chiffres,tuples, chaînes, ensembles gelés et classes définies par l'utilisateur, à quelques exceptions près. Ils ne peuvent pas changer, et leurs valeurs restent permanentes une fois qu'elles sont initialisées et donc appelées immuables.
En Python, tout est objet
Dans le langage de programmation Python, tout peut être considéré comme un objet comprenant des listes, des entiers et des fonctions. Cette fonctionnalité peut être comparée à d’autres langages de programmation prenant en charge les objets.
Cette fonctionnalité peut être vérifiée à l’aide d’un interpréteur Python comme indiqué ci-dessous : –
Code Python :
print("L'instance suivante est un objet :",isinstance(3,object))print("Une autre instance pour l'objet", isinstance(True, object))def my_func(): return "guru99"print("Ceci est un objet exemple de fonction et considéré comme un objet en Python :", isinstance(my_func, object))
Sortir:
Une instance suivante est un objet : TrueUne autre instance pour l'objet TrueIl s'agit d'un exemple de fonction considéré comme un objet en Python : True
De plus, Python fournit une fonction intégrée nommée id qui renvoie l'adresse de l'objet telle qu'elle est présente dans la mémoire du langage de programmation Python.
Code Python :
z=200id(z)print("L'identifiant de l'objet est", id(z))
Sortir:
l'identifiant de l'objet est 9795360
Dans le code ci-dessus, la fonction id ayant la syntaxe id(obj) donne l'adresse de obj dans la mémoire Python. Ici, il y a un objet nommé z, et il a une affectation de 200. L'objet z est ensuite transmis à la fonction id sous le nom id(z), et Python fournit l'adresse de l'objet sous la forme 9795360.
Objets mutables en Python
Dans un objet mutable, la valeur de l’objet change au fil du temps.
Dans cet exemple, nous avons expliqué les objets mutables en Python, et celui-ci utilise des listes comme application d'objets mutables, comme indiqué ci-dessous : –
Code Python :
mut_list = [1, 2, 3] print("La liste en Python",mut_list)mut_list[0] = 'Gurru99'mut_list print("La liste en Python après changement de valeur",mut_list)
Sortir:
La liste en Python [1, 2, 3]La liste en Python après changement de valeur ['Gurru99', 2, 3]
Comme nous pouvons le voir dans l'exemple ci-dessus, la liste mutable en Python avait des valeurs de 1,2,3. Le premier élément de la liste mutable passe de 1 à Guru99, et il ne crée pas de nouvel objet lorsqu'une nouvelle valeur est initialisée.
Ici, nous pouvons utiliser la méthode id pour l'utiliser. Ce qui suit illustre l'utilisation de la méthode id pour les objets mutables, comme indiqué ci-dessous : –
Code Python :
mut_list = [1, 2, 3]print("La liste en Python",mut_list)print("l'identifiant de la liste est ",id(mut_list))mut_list[0] = 'Gurru99'mut_listprint("La liste mut en Python après avoir changé la valeur",mut_list)print("l'identifiant de la liste est après le changement de valeur",id(mut_list))
Sortir
La liste en Python [1, 2, 3] l'identifiant de la liste est 139931568729600 La liste en Python après changement de valeur ['Gurru99', 2, 3] l'identifiant de la liste est après changement de valeur 139931568729600
La figure suivante illustre l'objet mutable en Python comme indiqué ci-dessous : –
Objets immuables en Python
Les objets immuables en Python sont des objets dont les instances ne changent pas au cours de la période. Les instances immuables d'un type spécifique, une fois créées, ne changent pas, et cela peut être vérifié à l'aide de la méthode id de Python.
Prenons un exemple d'objets de type entier en Python qui illustre le concept d'objets immuables en Python comme indiqué ci-dessous : –
Code Python :
a=244print("le numéro avant le changement est",a)print("l'identifiant du numéro avant le changement est",id(a))a=344print("le numéro après le changement est",a)print("l'identifiant du numéro après le changement est",id(a))
Sortir
le numéro avant un changement est 244 l'identifiant du numéro avant le changement est 9796768 le numéro avant le changement est 344 l'identifiant du numéro avant le changement est 140032307887024
On a pu voir ci-dessus qu’il y a un changement dans « a ». Étudions le fonctionnement du mécanisme :
- Il n’y a aucun changement dans la valeur de l’objet lors de l’initialisation de « a » avec 344.
- Au lieu de cela, un nouvel objet est créé et est délimité par « a ».
- L'autre objet attribué à 244 ne serait plus accessible.
- L'exemple ci-dessus utilisait un objet entier.
À a=244, un nouvel objet est créé et référencé à « a » comme indiqué ci-dessous : –
Postez en utilisant a=344, il y a un nouvel objet référencé par « a ». Le diagramme suivant représente la même chose : –
Par conséquent, chaque fois qu’une nouvelle valeur est attribuée au nom de type int, la liaison du nom avec un autre objet change. Le même principe s'aligne avec les tuples,cordes, float et Boolean sont donc appelés immuables.
Implications pour les clés de dictionnaire en Python
Les dictionnaires peuvent être définis comme des collections ordonnées qui stockent les données au format clé et n'autorisent pas les doublons. Les dictionnaires contiennent une clé sur laquelle est alignée une paire de valeurs correspondante. Leur type est modifiable et leur contenu peut être modifié même après leur initialisation et leur création.
A tout moment, la clé pointe vers un élément précis à la fois. Les clés des dictionnaires sont immuables.
Prenons un scénario hypothétique comme indiqué ci-dessous : –
a = [4, 6]b = [5, 6, 7]my_dict = {a : 'x', b : 'y'}print(my_dict)
Sortie : – Le code Python ci-dessus ne produit aucune sortie et génère à la place une erreur de type de type non hachable. Il s'agit d'une situation hypothétique et n'est pas utilisée dans le compilateur Python.
Ici,un
est défini comme [4,6], et dans le dictionnaire, il est défini comme x. Ici,b
est défini comme [5,6,7], et dans le dictionnaire, il est défini comme y.
- La clé « a » a la valeur de [4,6], et elle est en outre initialisée à x.
- La clé « b » a la valeur de [5,6,7] qui est ensuite initialisée à « y » dans un dictionnaire.
- Supposons maintenant que la valeur de 'un'est suivi de 5 et 7, qui sont une clé pour le dictionnaire.
- Ensuite, le dictionnaire a été muté, et il donnerait aux deux'X'et'oui'comme valeurs pour le dictionnaire ci-dessus.
Considérez le scénario suivant comme illustré ci-dessus : –
a = [5, 6,7]b = [5, 6, 7]my_dict = {a : 'x', b : 'y'}print(my_dict)
Par conséquent, en tant que langage de programmation, Python rend les clés du dictionnaire immuables et les dictionnaires sont des types de données immuables.
Exceptions à l'immuabilité
Cependant, Python fournit des exceptions à l'immuabilité. De telles exceptions peuvent être observées pour le type d'objet tuple. Un tuple peut être une combinaison de types d'objets mutables et immuables. Prenons un exemple pour expliquer les exceptions à l'immuabilité comme indiqué ci-dessous : –
Code Python :
tupexample=([1,1],'guru99')print("le tuple avant le changement",tupexample)print("l'identifiant du tuple avant le changement",id(tupexample))tupexample=([2,2],' guru99')print("le tuple après changement",tupexample)print("l'identifiant du tuple après changement",id(tupexample))
Sortir:
le tuple avant le changement ([1, 1], 'guru99')l'identifiant du tuple avant le changement 140649480694656le tuple après le changement ([2, 2], 'guru99')l'identifiant du tuple après le changement 140649480694592
Vous pouvez voir dans le code ci-dessus que le premier élément, qui est une liste, est mutable, alors que le tuple est immuable. La valeur du tuple ne peut pas être modifiée, mais le contenu de la liste présente à l'intérieur du tuple peut changer sa valeur.
Par conséquent, cela soulève une exception selon laquelle les objets immuables ne changent pas leur valeur, mais la valeur des constituants change leur valeur.
Objets mutables ou immuables
Voici les principales différences entre les objets mutables et immuables :
Objet mutable | Objet immuable |
---|---|
L'état de l'objet peut être modifié une fois créé | L'état de l'objet ne peut pas être modifié une fois créé |
Les objets mutables ne sont pas considérés comme étant de nature thread-safe. | Les objets immuables sont considérés comme de nature thread-safe. |
Les objets mutables ne sont pas rendus définitifs et le programmeur peut donc continuer à modifier les objets mutables et utiliser les mêmes objets. | Il est essentiel de rendre les classes définitives lors de la création de l'objet immuable |
Types de données immuables Python
Classe | Explication | Immuable ou pas |
---|---|---|
Booléen | Valeur booléenne | Immuable |
Int | Valeur entière (la grandeur peut être arbitraire) | Immuable |
Flotter | Nombre à virgule flottante | Immuable |
Liste | Séquence d'objets de nature mutable | Mutable |
Tuple | Séquence d'objets de nature immuable | Immuable |
Str | Chaîne de caractères | Immuable |
Ensemble | ensemble d'objets distincts qui sont de nature non ordonnée | Mutable |
Ensemble congelé | Définir une classe de nature immuable | Immuable |
Dicté | Dictionnaire ou cartographie associative | Mutable |
Tu pourrais aimer:
- Compilateur Python en ligne (éditeur/interprète/IDE) pour exécuter du code
- Tutoriel PyUnit : Framework de tests unitaires Python (avec exemple)
- Comment installer Python sur Windows [Pycharm IDE]
- Hello World : créez votre premier programme Python
- Variables Python : Comment définir/déclarer des types de variables de chaîne