Maison > Article > développement back-end > Pourquoi les chaînes Python semblent-elles mutables lors de l'utilisation de \"a \" \" b\" ?
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>
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!