Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 14, 2013 20:53:37

GrifAngel
Зарегистрирован: 2012-09-10
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Почему в питоне переменные сделаны как указатели?

Почему в питоне переменные сделаны как указатели? То есть почему примитивные типы такие как int и str хранят не само значение, а адрес на это значение? Какой в этом смысл? Буду благодарен.

Офлайн

#2 Авг. 14, 2013 20:59:56

Singularity
Зарегистрирован: 2011-07-28
Сообщения: 1387
Репутация: +  75  -
Профиль   Отправить e-mail  

Почему в питоне переменные сделаны как указатели?

Откуда инфа?

Офлайн

#3 Авг. 14, 2013 21:55:15

sergeek
Зарегистрирован: 2012-06-26
Сообщения: 470
Репутация: +  43  -
Профиль   Отправить e-mail  

Почему в питоне переменные сделаны как указатели?

Не переменные а сами значения, и не все, а в каком-то диапазоне. Почему не знаю. Наверное кэширует наиболее часто используемые значения для каких-нибудь оптимизаций. Такое вроде во всех интерпретируемых ЯП делают

Офлайн

#4 Авг. 17, 2013 17:58:19

lorien
От:
Зарегистрирован: 2006-08-20
Сообщения: 755
Репутация: +  37  -
Профиль  

Почему в питоне переменные сделаны как указатели?

, а адрес на это значение? Какой в этом смысл? Буду благодарен.
Если вы про 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)

Офлайн

#5 Авг. 17, 2013 19:14:09

ring0za
Зарегистрирован: 2012-08-13
Сообщения: 18
Репутация: +  1  -
Профиль   Отправить e-mail  

Почему в питоне переменные сделаны как указатели?

У Лутца написано, что вроде это и ссылки на объекты, и в след. разделе во врезке “указатели”. Чуть подробнее есть что-нибудь?

Офлайн

#6 Авг. 17, 2013 19:29:50

lorien
От:
Зарегистрирован: 2006-08-20
Сообщения: 755
Репутация: +  37  -
Профиль  

Почему в питоне переменные сделаны как указатели?

Поподробнее в исходниках питона можно посмотреть.

Офлайн

#7 Авг. 17, 2013 20:04:44

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Почему в питоне переменные сделаны как указатели?

GrifAngel
почему примитивные типы такие как int и str хранят не само значение, а адрес на это значение?
Может потому что это язык высокого уровня и все является “объектами”, а с объектами работают через ссылки.

Если бы int хранил значение то адрес переменной “a” не изменился бы (например как в c++):
>>> a = 1
>>> print id(a)
21724264
>>> a = 2
>>> print id(a)
21724240

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version