Форум сайта python.su
0
Почему в питоне переменные сделаны как указатели? То есть почему примитивные типы такие как int и str хранят не само значение, а адрес на это значение? Какой в этом смысл? Буду благодарен.
Офлайн
75
Откуда инфа?
Офлайн
43
Не переменные а сами значения, и не все, а в каком-то диапазоне. Почему не знаю. Наверное кэширует наиболее часто используемые значения для каких-нибудь оптимизаций. Такое вроде во всех интерпретируемых ЯП делают
Офлайн
, а адрес на это значение? Какой в этом смысл? Буду благодарен.Если вы про 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
Отредактировано lorien (Авг. 17, 2013 17:58:44)
Офлайн
1
У Лутца написано, что вроде это и ссылки на объекты, и в след. разделе во врезке “указатели”. Чуть подробнее есть что-нибудь? 
Офлайн
Поподробнее в исходниках питона можно посмотреть.
Офлайн
32
GrifAngelМожет потому что это язык высокого уровня и все является “объектами”, а с объектами работают через ссылки.
почему примитивные типы такие как int и str хранят не само значение, а адрес на это значение?
>>> a = 1 >>> print id(a) 21724264 >>> a = 2 >>> print id(a) 21724240
Офлайн