Я читаю qaru.site/info/694183/... и кажется, что в CPython переменные - это просто имена, связанные со ссылками.
Происходит несколько вещей с утверждением x = 5:
- создается объект int со значением 5 (или найден, если он уже существует)
- имя x создается (или отключается с последним объектом 'x' помечено)
- счетчик ссылок на новый (или найденный) объект int увеличено на 1
- имя x связано с объектом с значение '5' создано (или найдено).
Тем не менее, я до сих пор не понимаю, как именно внутренние переменные реализованы.
А именно:
- имя x создается (или не связано с последним объектом "x" );
Тогда не будет ли это имя занимать память? sys.sizeof(x)
equals sys.sizeof(5)
, и я получаю, что sys.sizeof(x)
может только возвращать размер связанной ссылки, но тогда какой размер имени x
?
- имя x связано с объектом со значением '5', созданным (или найденным)
Как это реализовано внутри страны? Я думаю, что на высоком уровне это можно сделать с помощью dict
, где ключ - это имя переменной (str
?), А значение - это ссылка, с которой она связана.