В CPython кэшируются некоторые значения таких типов, как int
, str
и tuple
:
>>> 1 is eval('1')
True
>>> "foo" is eval('"foo"')
True
>>> () is eval('()')
True
Вместо того, чтобы создавать новый экземпляр, CPython повторно использует существующие. У меня вопрос, какие типы подлежат этому типу кэширования в Python? Может ли complex
экземпляр быть кэширован? А как насчет object
или bytearray
или range
или slice
или memoryview
? И где это задокументировано?
(Обратите внимание, что я спрашиваю о языке Python, не реализация CPython.)