Форум сайта python.su
Не могу нигде найти информации как в питоне сделать что-то вроде ссылки на объект. Более конкретно - нужно обращаться к одному экземпляру объекта, из нескольких функций в многопоточном режиме. Нашел упоминание о такой штуке как aliasing, но не могу найти инфу по теме.
Офлайн
Передать как элемент списка, например.
Офлайн
А более тривиального способа не предусмотрено? Мне такой прием представляется костылем ).
Офлайн
>>> a = object()
>>> b = a
>>> a is b
True
Офлайн
А вот в этом случае:
In [1]: a = 1
In [2]: b = 1
In [3]: a is b
Out[3]: True
In [1]: a = 1
In [2]: b = 1
In [3]: a is b
Out[3]: True
In [4]: a = 1000000
In [5]: b = 1000000
In [6]: a is b
Out[6]: False
In [7]: a = 1
In [8]: b = 1
In [9]: a is b
Out[9]: True
Отредактировано (Фев. 27, 2010 19:01:14)
Офлайн
инты вроде и строки до какойто длины кешируюца
Офлайн
Спасибо, это все объясняет
Офлайн
Спасибо за комментарии. Пошел учить матчасть)
Офлайн
хеш тут не причем. имхо, просто в шелле питон не создает вторую единичку, а использует ссылку на первую, и почему-то не делает этого для 1000000.
Отредактировано (Март 1, 2010 11:39:29)
Офлайн
Как же кеш не при чем? Смотрите
http://svn.python.org/view/python/trunk/Objects/intobject.c?view=markup, PyObject* PyInt_From_Long(long).
Если число в диапазоне [-NSMALLNEGINTS, NSMALLNEGINTS) - оно берется именно из кеша. NSMALLNEGINTS - немного меньше сотни, кажется.
Офлайн