Comprendre l'internement de chaîne Python
L'internement de chaîne, un détail d'implémentation de Python, implique la création d'une seule instance d'une valeur de chaîne lorsqu'elle se produit plusieurs fois dans un programme. Cette optimisation accélère l'exécution du programme en réduisant la mémoire utilisée pour le stockage des chaînes.
En Python, les chaînes constantes au moment de la compilation sont généralement internées. Par conséquent, vous pouvez comparer directement deux littéraux de chaîne pour vérifier l'égalité :
"string" is "string"
Cette comparaison renvoie True car les deux littéraux de chaîne sont le même objet.
Cependant, l'internement de chaîne ne s'applique pas aux expressions d'exécution. Considérez le code suivant :
s1 = "strin" s2 = "string" s1 + "g" is s2
Vous pouvez vous attendre à ce que cette expression soit évaluée à True, car l'ajout de "g" à "string" donne "string". Cependant, il renvoie False. En effet, l'opération de concaténation ne crée pas de chaîne interne :
s3a = "strin" s3 = s3a + "g" s3 is "string"
Dans ce cas, s3 est un nouvel objet chaîne, distinct de s3a et de "string".
Vous pouvez interner manuellement une chaîne à l'aide de la fonction sys.intern() :
sys.intern(s3) is "string"
Cette ligne de code oblige Python à créer une chaîne interne avec la même valeur que s3. En conséquence, la comparaison avec "string" renvoie True.
En conclusion, l'internement de chaîne Python s'applique aux constantes de compilation. Cependant, les opérations d'exécution sur les chaînes telles que la concaténation ne créent pas automatiquement des chaînes internes. En comprenant ce détail d'implémentation, vous pouvez optimiser les performances du code en utilisant soigneusement l'internement de chaînes.
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!