Maison > développement back-end > Tutoriel Python > Python interne-t-il les chaînes au moment de la compilation ou de l'exécution, et comment cela affecte-t-il les comparaisons ?

Python interne-t-il les chaînes au moment de la compilation ou de l'exécution, et comment cela affecte-t-il les comparaisons ?

Linda Hamilton
Libérer: 2024-12-14 02:03:10
original
671 Les gens l'ont consulté

Does Python Intern Strings at Compile Time or Run Time, and How Does This Affect Comparisons?

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!

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal