Objets mutables et immuables en Python {EXEMPLES} (2023)

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,unest défini comme [4,6], et dans le dictionnaire, il est défini comme x. Ici,best 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 mutableObjet 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

ClasseExplicationImmuable ou pas
BooléenValeur booléenneImmuable
IntValeur entière (la grandeur peut être arbitraire)Immuable
FlotterNombre à virgule flottanteImmuable
ListeSéquence d'objets de nature mutableMutable
TupleSéquence d'objets de nature immuableImmuable
StrChaîne de caractèresImmuable
Ensembleensemble d'objets distincts qui sont de nature non ordonnéeMutable
Ensemble congeléDéfinir une classe de nature immuableImmuable
DictéDictionnaire ou cartographie associativeMutable

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

References

Top Articles
Latest Posts
Article information

Author: Dan Stracke

Last Updated: 19/09/2023

Views: 5979

Rating: 4.2 / 5 (43 voted)

Reviews: 90% of readers found this page helpful

Author information

Name: Dan Stracke

Birthday: 1992-08-25

Address: 2253 Brown Springs, East Alla, OH 38634-0309

Phone: +398735162064

Job: Investor Government Associate

Hobby: Shopping, LARPing, Scrapbooking, Surfing, Slacklining, Dance, Glassblowing

Introduction: My name is Dan Stracke, I am a homely, gleaming, glamorous, inquisitive, homely, gorgeous, light person who loves writing and wants to share my knowledge and understanding with you.