Objets mutables et immuables dans Python {EXEMPLES}
Qu'est-ce qu'un objet mutable ?
Mutable dans Python peut รชtre dรฉfini comme l'objet qui peut changer ou รชtre considรฉrรฉ comme quelque chose de nature changeante. Mutable signifie la possibilitรฉ de modifier ou d'รฉditer une valeur.
Objets mutables dans Python permettre aux programmeurs d'avoir des objets qui peuvent changer 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 ?
Objets immuables dans 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 ils constituent une partie essentielle des structures de donnรฉes utilisรฉes dans Python.
Python est utilisรฉ dans les nombres, 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.
In Python, tout est objet
Dans l' Python langage de programmation, 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 Python interprรจte comme indiquรฉ ci-dessous : โ
Python code:
print("The following instance is an object:",isinstance(3,object))
print("Another instance for object", isinstance(True, object))
def my_func():
return "guru99"
print("This is a function example and regarded as an object in Python:", isinstance(my_func, object))
Sortie :
A following instance is an object: True Another instance for object True This is a function example and regarded as an object in Python: True
Par ailleurs, les 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 Python langage de programmation.
Python code:
z=200
id(z)
print("The id of object is", id(z))
Sortie :
the id of object is 9795360
Dans le code ci-dessus, la fonction id ayant la syntaxe id(obj) donne l'adresse de obj dans Python mรฉmoire. Ici, il y a un objet nommรฉ z, et il a une affectation de 200. L'objet z est ensuite passรฉ dans la fonction id sous le nom id(z), et le Python fournit l'adresse de l'objet sous la forme 9795360.
Objets mutables dans Python
Dans un objet mutable, la valeur de l'objet change au fil du temps.
Dans cet exemple, nous avons expliquรฉ les objets mutables dans Python, et cela utilise des listes comme application d'objets mutables comme indiquรฉ ci-dessous : โ
Python Code:
mut_list = [1, 2, 3]
print("The list in Python",mut_list)
mut_list[0] = 'Gurru99'
mut_list
print("The list in Python after changing value",mut_list)
Sortie :
The list in Python [1, 2, 3] The list in Python after changing value ['Gurru99', 2, 3]
Comme nous pouvons le voir dans l'exemple ci-dessus, la liste mutable dans Python Les valeurs initiales รฉtaient 1, 2 et 3. Le premier รฉlรฉment de la liste modifiable passe de 1 ร 3. 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 : โ
Python Code:
mut_list = [1, 2, 3]
print("The list in Python",mut_list)
print("the id of the list is ",id(mut_list))
mut_list[0] = 'Gurru99'
mut_list
print("The mut list in Python after changing value",mut_list)
print("the id of the list is post change in value",id(mut_list))
Sortie
The list in Python [1, 2, 3] the id of the list is 139931568729600 The list in Python after changing value ['Gurru99', 2, 3] the id of the list is post change in value 139931568729600
La figure suivante illustre l'objet mutable dans Python comme indiquรฉ ci-dessous : โ
Objets immuables dans Python
Objets immuables dans 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 dans Python qui illustre le concept d'objets immuables dans Python comme indiquรฉ ci-dessous : โ
Python Code:
a=244
print("the number before change is",a)
print("the id of number before change is",id(a))
a=344
print("the number after change is",a)
print("the id of number after change is",id(a))
Sortie
the number before a change is 244 the id of number before change is 9796768 the number before change is 344 the id of number before change is 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, instruments ร cordes, float et Boolean sont donc appelรฉs immuables.
Implications pour les clรฉs de dictionnaire dans 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 : โ Ce qui prรฉcรจde Python le code ne donne 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 Python compilateur.
Ici, a 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 'a ' 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 ยซyยป 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)
Ainsi, 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รฉ
Toutefois, 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 : โ
Python Code:
tupexample=([1,1],'guru99')
print("the tuple before change",tupexample)
print("the id of tuple before change",id(tupexample))
tupexample=([2,2],'guru99')
print("the tuple after change",tupexample)
print("the id of tuple after change",id(tupexample))
Sortie :
the tuple before change ([1, 1], 'guru99') the id of tuple before change 140649480694656 the tuple after change ([2, 2], 'guru99') the id of tuple after change 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 |
Python Types de donnรฉes immuables
| Classe | Explication | Immuable ou pas |
|---|---|---|
| Bool | Valeur boolรฉenne | Immuable |
| Int | Valeur entiรจre (la grandeur peut รชtre arbitraire) | Immuable |
| flotteur | 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 |
| complet ยป | ensemble d'objets distincts qui sont de nature non ordonnรฉe | Mutable |
| Ensemble congelรฉ | Dรฉfinir une classe de nature immuable | Immuable |
| Dict | Carte associative ou dictionnaireping | Mutable |


