Почему IPython %autoreload повторно инициализирует мои переменные?

#python #ipython

#python #ipython

Вопрос:

У меня есть этот модуль:

 foo = []
  

И из IPython я делаю:

 In [1]: foo.append(42)
In [2]: foo
Out [2]: [42]
  

Затем я редактирую свой модуль, который заставляет IPython перезагружать мой модуль

 In [3]: foo
Out [3]: []
  

В моем модуле мне нужно сохранить обработчики, возвращаемые некоторыми функциями DLL. Они должны храниться в течение всего сеанса, но когда я отлаживаю свой модуль и он автоматически перезагружается, я потерял эти обработчики.

Как предотвратить сброс переменных IPython?

Комментарии:

1. Переменная инициализируется в модуле, поэтому перезагрузка модуля повторно инициализирует переменную. По-другому и быть не может.

2. Есть ли какой-либо возможный обходной путь? Используя другой модуль только для хранения этих значений?

3. Вы могли бы попробовать это. Или (ужасный взлом) сохраните значения в __builtin__ модуле.