Интернирование строк — это оптимизация, при которой Python автоматически переиспользует один и тот же объект в памяти для определённых значений строк вместо создания нового объекта каждый раз.
Когда две переменные содержат одну и ту же интернированную строку, они указывают на идентичный объект в памяти:
a = "hello"
b = "hello"
print(a is b) # Может вернуть True — один и тот же объект
Python обычно интернирует строки, которые:
Строки с пробелами или спецсимволами обычно не интернируются автоматически:
a = "hello world"
b = "hello world"
print(a is b) # Может вернуть False — разные объекты
Это напрямую влияет на оператор is, который проверяет идентичность объектов (одинаковый адрес в памяти), а не равенство:
is может вернуть True для интернированных строк даже без явного присваивания== проверяет равенство значений и всегда надёжен для сравнения строк== для сравнения значений строкis для проверки синглтонов вроде None, True или Falsesys.intern("my string"), когда тебе нужно гарантированное сравнение по идентичности для оптимизации производительностиИнтернирование строк в Python гарантировано спецификацией языка и будет постоянно переиспользовать один и тот же объект для одинаковых строковых значений во всех реализациях.
Новый — ещё не проверен сообществом
Вы