Python Glossary English

Python 3.0+sysфункция

sys.intern()

строки

Интернирует строку — гарантирует, что идентичные строки используют один объект в памяти. Ускоряет сравнение через 'is'.

Синтаксис

sys.intern(string: str) -> str

Выигрыш здесь прежде всего в памяти, когда одна и та же строка повторяется тысячами раз (ключи разобранного файла, повторяющиеся токены), а не в скорости вообще: обычное == и так начинает со сравнения по идентичности. Ссылку на результат надо хранить самому — интернированная строка не бессмертна и уходит вместе с последней ссылкой. И не переносите приём на обычный код: сравнивать строки через is нельзя, короткие литералы CPython интернирует сам, поэтому такой код обманчиво работает в примерах и ломается на строках, собранных в рантайме.

Примеры

import sys
a = sys.intern('hello')
b = sys.intern('hello')
print(a is b)  # → True
c = 'hel' + 'lo'
print(sys.intern(c) is a)  # → True
words = [sys.intern(w) for w in ['apple', 'banana', 'apple']]
print(words[0] is words[2])  # → True
print(type(sys.intern('x')))  # → <class 'str'>

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности