Найти - Пользователи
Полная версия: Почему в питоне переменные сделаны как указатели?
Начало » Python для новичков » Почему в питоне переменные сделаны как указатели?
1
GrifAngel
Почему в питоне переменные сделаны как указатели? То есть почему примитивные типы такие как int и str хранят не само значение, а адрес на это значение? Какой в этом смысл? Буду благодарен.
Singularity
Откуда инфа?
sergeek
Не переменные а сами значения, и не все, а в каком-то диапазоне. Почему не знаю. Наверное кэширует наиболее часто используемые значения для каких-нибудь оптимизаций. Такое вроде во всех интерпретируемых ЯП делают
lorien
, а адрес на это значение? Какой в этом смысл? Буду благодарен.
Если вы про int и str, то это в целях оптимизации сделано. Подробнее можно у Лутца почитать.

>>> foo = 1
>>> boo = 1
>>> foo is boo
True
>>> id(foo)
22850664
>>> id(boo)
22850664
>>> a = "a"
>>> b = "a"
>>> id(a)
139677204813264
>>> id(b)
139677204813264
>>> a = "a" * 1111
>>> b = "a" * 1111
>>> id(a)
23753744
>>> id(b)
23754912
Как видим, маленькие значения закешировались, а вот переменные содержащие большие строки уже ссылаются на разные области памяти.
ring0za
У Лутца написано, что вроде это и ссылки на объекты, и в след. разделе во врезке “указатели”. Чуть подробнее есть что-нибудь?
lorien
Поподробнее в исходниках питона можно посмотреть.
o7412369815963
GrifAngel
почему примитивные типы такие как int и str хранят не само значение, а адрес на это значение?
Может потому что это язык высокого уровня и все является “объектами”, а с объектами работают через ссылки.

Если бы int хранил значение то адрес переменной “a” не изменился бы (например как в c++):
>>> a = 1
>>> print id(a)
21724264
>>> a = 2
>>> print id(a)
21724240
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB