Mutables vs objets immuables dans Python - Analytics Vidhya
Introduction
Python est un langage de programmation orienté objet (ou OOPS). Dans mon article précédent, nous avons exploré sa nature polyvalente. Pour cette raison, Python offre une grande variété de types de données, qui peuvent être largement classés en types mutables et immuables. Cependant, en tant que curieux développeur Python, j'espère que vous vous demandez également comment ces concepts ont un impact sur les données. Comment les données sont-elles traitées et manipulées en mémoire? Comment a-t-il affecté la qualité du programme? Cet article fournira un aperçu complet des objets mutables vs immuables à Python et pourquoi ils sont cruciaux pour une programmation efficace. Nous explorerons comment la mutabilité et l'immuabilité fonctionnent sur différents objets Python, tels que les types de données primitifs comme les entiers, les flotteurs, les chaînes, etc., et les données de données intégrées comme les listes, les dictionnaires, les ensembles, les tuples, etc.
Table des matières
- Qu'est-ce que la mutabilité vs l'immuabilité?
- Que sont les objets mutables vs immuables dans Python?
- Analyse comparative des types de données Python
- Que se passe-t-il au niveau de la mémoire?
- Comment fonctionne la suppression des objets?
- Comment les performances d'un programme sont-elles déterminées?
- Questions fréquemment posées
Qu'est-ce que la mutabilité vs l'immuabilité?
Du point de vue de haut niveau, la mutabilité fait référence à la capacité de tout objet à modifier, à modifier ou à mettre à jour après sa création. Cela signifie que si un objet est mutable, vous pouvez modifier son état ou son contenu sans créer un nouvel objet.
D'un autre côté, l'immuabilité signifie qu'une fois un objet créé, son état ne peut pas être modifié / modifié / mis à jour. Tout changement à ces objets crée un nouvel objet avec une allocation de mémoire différente plutôt que de modifier celui existant.
Que sont les objets mutables vs immuables dans Python?
L'image ci-dessous montre que les riches types de données de Python peuvent être divisés en deux catégories: des objets mutables et immuables, qui sont ensuite divisés.
Analyse comparative des types de données Python
Jetons un coup d'œil sur une comparaison entre tous les données intégrées:
Type de données | Mutable / immuable | Description | Cas d'utilisation |
Entiers | Immuable | Nombres entiers (par exemple, 1, -5, 42). | Utilisez lorsque vous travaillez avec des données numériques qui ne changent pas. |
Chars | Immuable | Nombres avec des points décimaux (par exemple, 3,14, -0,001). | Utile pour les calculs scientifiques, les données financières, etc. |
Booléens | Immuable | Valeurs logiques: vrai ou faux. | Vérification conditionnelle, opérations logiques. |
Cordes | Immuable | Séquence de personnages (par exemple, «Hello», «Monde»). | Utilisé pour la manipulation du texte, le traitement des documents, etc. |
Tuples | Immuable | Collection commandée d'articles (par exemple, (1, 2, 3)). | Convient aux données constantes, il peut être utilisé comme clés de dictionnaire. |
Ensembles surgelés | Immuable | Une collection non ordonnée d'articles uniques, une version immuable d'un ensemble. | Utilisé dans les cas où l'ensemble doit être constant et hashable. |
Nombres complexes | Immuable | Nombres avec des parties réelles et imaginaires (par exemple, 1 2J). | Utilisé dans l'informatique scientifique, le traitement du signal, etc. |
Listes | Mutable | Collection commandée d'articles (par exemple, [1, 2, 3]). | Utilisez lorsque vous devez modifier, ajouter ou supprimer fréquemment des éléments. |
Dictionnaires | Mutable | Collection de paires de valeurs clés (par exemple, {«Nom»: «John», «Age»: 30}). | Idéal pour cartographier les relations, les recherches et le stockage de données. |
Sets | Mutable | Collection non ordonnée d'articles uniques (par exemple, {1, 2, 3}). | Mieux utilisé pour les tests d'adhésion, la suppression des doublons, etc. |
Objets personnalisés (classes) | Mutable / immuable | Le comportement dépend de la façon dont la classe est définie (mutable par défaut). | Comportement sur mesure basé sur les exigences; peut contrôler la mutabilité. |
Pour comprendre ces concepts d'une manière plus pythonique, passez par ces éléments -
- Les données primitives sont «immuables» - lien
- Les structures de données intégrées à Python sont «mutables» - lien
Dans ces articles, j'ai discuté de la mutabilité et de l'immuabilité de ces données, la fonction «ID» , la copie superficielle et profonde, et plus encore, ainsi que les codes.
Remarque : Cependant, je recommande uniquement de vérifier ces codes après avoir lu cet article. Cet article améliore votre compréhension de «Que se passe-t-il dans l'espace mémoire?»
Que se passe-t-il au niveau de la mémoire?
Lorsque vous discutez de l'immuabilité au niveau de la mémoire, un objet immuable ne peut pas être modifié directement. Toute opération qui semble modifier un objet immuable crée un nouvel objet avec la valeur modifiée en mémoire. Les objets mutables partagent la même mémoire allouée précédemment. Des modifications à ces objets se produisent en place, modifiant le contenu de mémoire existant sans nouvelle allocation.
Avant d'explorer cela plus loin, comprenons d'abord les deux concepts les plus courants concernant la suppression des objets de mémoire.
- Deallocation signifie que le système libère et met à disposition pour d'autres utilisations la mémoire précédemment occupée par un objet.
- La collecte des ordures est un processus de Python qui trouve automatiquement et libère une mémoire qui n'est plus utilisée par le programme, en particulier pour les objets qui se référent mutuellement dans un cycle.
Comment fonctionne la suppression des objets?
La gestion de la mémoire de Python repose sur deux choses majeures, le comptage de références et les collectionneurs d'ordures, pour gérer la suppression des objets. Comprenons-les un par un:
- Comptage de référence: Python suit le nombre de références pointant vers chaque objet. C'est ce qu'on appelle le nombre de références.
- Références cycliques - Collection des ordures: Python a également un collecteur de déchets qui gère les références cycliques. Parfois, les objets se référencent dans une boucle. Lorsque le nombre de références tombe à zéro, la mémoire occupée par l'objet est traitée. Par exemple, l'objet a références objet B et objet B Références Objet A. Même si aucune autre partie du programme n'a besoin de ces objets, leur nombre de références ne tombe jamais à zéro car ils se font référence. C'est là que le collecteur des ordures intervient.
Comment les performances d'un programme sont-elles déterminées?
En termes d'implications de performance, la mutabilité et l'immuabilité ont des différences significatives. Les types de données immuables sont généralement plus rapides pour accéder et traiter. Python peut optimiser l'utilisation de la mémoire en réutilisant des objets immuables, principalement si vous travaillez avec de petits entiers et des chaînes à travers le programme.
Les types de données mutables sont plus flexibles mais peuvent encourir des frais généraux supplémentaires en raison du besoin de redimensionnement dynamique de l'espace mémoire. Par exemple, les listes de Python sont des tableaux dynamiques car ils sont stockés d'une manière qui leur permet de croître et de rétrécir en taille tout en effectuant des opérations telles que l'ajout ou la suppression d'éléments.
Conclusion
En conclusion, la compréhension de la différence entre les objets mutables et immuables est crucial pour écrire un code efficace et fiable dans Python. Par exemple, l'immuabilité offre une sécurité lorsque les données ne devraient pas changer, comme dans les mappages de valeurs clés ou la programmation simultanée.
À l'inverse, la mutabilité est utile dans les scénarios où des mises à jour dynamiques des structures de données sont nécessaires pour cette partie particulière du programme. Savoir quand utiliser ce qui est essentiel pour comprendre les compromis en performance et en complexité, ce qui conduit finalement à la rédaction de programmes maintenables.
Lire aussi: Guide complet des structures de données intégrées Python
Questions fréquemment posées
Q1. Quelle est la différence entre les objets mutables vs immuables dans Python?A. Les objets mutables, comme les listes ou les dictionnaires, offrent la flexibilité de la modification en place après leur création. Pendant ce temps, les objets immuables, tels que les tuples ou les chaînes, ne peuvent pas être modifiés après la création dans la même allocation de mémoire.
Q2. Pourquoi les chaînes sont-elles immuables à Python?A. Les chaînes sont immuables pour optimiser l'utilisation de la mémoire et permettre un partage sûr sur différentes parties du programme. Cela réduit l'utilisation de la mémoire pour les chaînes fréquemment utilisées et simplifie le raisonnement sur la manipulation des chaînes dans des environnements multithreads.
Q3. Comment l'immuabilité affecte-t-elle les performances dans Python?A. Les objets immuables peuvent conduire à des performances plus rapides car elles sont plus faciles à gérer en mémoire. Python peut réutiliser des objets immuables, réduisant les frais généraux de la création de nouveaux objets à plusieurs reprises. Cela ajoute un aperçu des avantages de la gestion de la mémoire.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

L'article passe en revue les meilleurs générateurs d'art AI, discutant de leurs fonctionnalités, de leur aptitude aux projets créatifs et de la valeur. Il met en évidence MidJourney comme la meilleure valeur pour les professionnels et recommande Dall-E 2 pour un art personnalisable de haute qualité.

META'S LLAMA 3.2: un bond en avant dans l'IA multimodal et mobile Meta a récemment dévoilé Llama 3.2, une progression importante de l'IA avec de puissantes capacités de vision et des modèles de texte légers optimisés pour les appareils mobiles. S'appuyer sur le succès o

L'article compare les meilleurs chatbots d'IA comme Chatgpt, Gemini et Claude, en se concentrant sur leurs fonctionnalités uniques, leurs options de personnalisation et leurs performances dans le traitement et la fiabilité du langage naturel.

Hé là, codant ninja! Quelles tâches liées au codage avez-vous prévues pour la journée? Avant de plonger plus loin dans ce blog, je veux que vous réfléchissiez à tous vos malheurs liés au codage - les énumérez. Fait? - Let & # 8217

L'article traite des meilleurs assistants d'écriture d'IA comme Grammarly, Jasper, Copy.ai, WireSonic et Rytr, en se concentrant sur leurs fonctionnalités uniques pour la création de contenu. Il soutient que Jasper excelle dans l'optimisation du référencement, tandis que les outils d'IA aident à maintenir le ton

Le paysage de l'IA de cette semaine: un tourbillon de progrès, de considérations éthiques et de débats réglementaires. Les principaux acteurs comme Openai, Google, Meta et Microsoft ont déclenché un torrent de mises à jour, des nouveaux modèles révolutionnaires aux changements cruciaux de LE

La récente note du PDG de Shopify Tobi Lütke déclare hardiment la maîtrise de l'IA une attente fondamentale pour chaque employé, marquant un changement culturel important au sein de l'entreprise. Ce n'est pas une tendance éphémère; C'est un nouveau paradigme opérationnel intégré à P

L'article examine les meilleurs générateurs de voix d'IA comme Google Cloud, Amazon Polly, Microsoft Azure, IBM Watson et Descript, en se concentrant sur leurs fonctionnalités, leur qualité vocale et leur aptitude à différents besoins.
