Pourquoi les chaînes Python semblent-elles mutables lors de l'utilisation de \'a \' \' b\' ?

DDD
Libérer: 2024-10-31 22:20:29
original
427 Les gens l'ont consulté

Why Do Python Strings Appear Mutable When Using

Dévoilement de la nature mutable des chaînes Python : une exploration d'un " " b

Malgré la croyance de longue date selon laquelle les chaînes Python sont intrinsèquement immuable, une observation particulière remet en question cette notion. Lors de la concaténation de chaînes à l'aide de la syntaxe a " " b, les chaînes semblent subir des modifications. Examinons ce comportement déroutant.

Enquête sur le code

Considérez l'extrait de code suivant :

<code class="python">a = "Dog"
b = "eats"
c = "treats"

print a, b, c
# Dog eats treats

print a + " " + b + " " + c
# Dog eats treats

print a
# Dog

a = a + " " + b + " " + c
print a
# Dog eats treats
# !!!</code>
Copier après la connexion

Comprendre l'anomalie

D'après notre compréhension, les chaînes Python sont immuables, interdisant la manipulation directe de leur contenu. Cependant, le code ci-dessus démontre le contraire. Lors de l'exécution de la ligne a = a " " b " " c, la chaîne pointée par a semble avoir été modifiée, ce qui prête à confusion.

Démêler le mystère

Voici la clé pour comprendre ce comportement : les chaînes Python elles-mêmes restent immuables. Au lieu de cela, la variable a est réaffectée à un nouvel objet chaîne contenant le contenu concaténé.

Dans la première partie du code, a pointe initialement vers la chaîne "Dog". Lorsque nous concaténons des chaînes à l'aide d'un " " b, une nouvelle chaîne est créée en mémoire qui contient le résultat de la concaténation, dans ce cas, "Le chien mange des friandises". Cependant, a pointe toujours vers la chaîne "Chien" d'origine.

Lorsque nous attribuons la valeur a " " b " " c à a, cela crée un nouvel objet chaîne qui contient le résultat concaténé, " Le chien mange des friandises ", et a pointe maintenant vers cette nouvelle chaîne. La chaîne "Dog" d'origine reste inchangée et est toujours accessible en mémoire.

Par conséquent, la mutation apparente des chaînes dans ce contexte est le résultat d'une réaffectation de la variable pointant vers la chaîne, et non d'une modification de la chaîne. lui-même. Les chaînes Python conservent leur nature immuable tout en offrant la possibilité de modifier les références qui les pointent.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!