Comprendre l'internement de chaînes Python
L'internement de chaînes est un mécanisme dans lequel plusieurs chaînes avec le même contenu partagent le même objet en mémoire. Python utilise l'internement de chaînes pour optimiser la gestion des chaînes et réduire l'utilisation de la mémoire.
Internement de chaînes au moment de la compilation
Les deux premiers exemples démontrent l'internement de chaînes au moment de la compilation. Les deux chaînes (« string » et « strin » « g ») sont évaluées et converties en le même objet chaîne immuable au moment de la compilation. Il en résulte que les deux chaînes sont équivalentes et occupent la même adresse mémoire.
Évaluation des chaînes au moment de l'exécution
Cependant, le troisième exemple implique une concaténation de chaînes au moment de l'exécution. . Contrairement à la concaténation à la compilation, le résultat de cette opération n’est pas automatiquement interné. Par conséquent, "s1 "g" et "string" occupent des adresses mémoire différentes, ce qui entraîne la comparaison "s1 "g" est "string" renvoyant False.
Contrôle de l'internement des chaînes
Vous pouvez intégrer manuellement une chaîne en utilisant sys.intern(). Ce faisant, vous vous assurez que la chaîne littérale que vous transmettez est le même objet que la valeur de chaîne existante si elle existe.
Détails d'implémentation
Le comportement d'internement des chaînes dépend de l'implémentation Python spécifique. CPython (l'implémentation Python la plus courante) intègre les constantes de compilation mais pas les résultats des expressions d'exécution. Cette explication s'applique à CPython 3.9.0 et aux versions ultérieures.
Remarque : Python 3.9 émet un avertissement lors de l'utilisation de "is" avec des chaînes littérales pour les comparer en termes d'égalité. Utilisez plutôt "==" à cet effet.
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!