Python целевая переменная, заданная строка - PullRequest
0 голосов
/ 25 августа 2018

РЕДАКТИРОВАТЬ: общая идея состоит в том, чтобы сохранить все переменные в моем блокноте Jupyter с помощью% store magic для использования% store -r, чтобы вернуть их все к следующему сеансу.

Я пытаюсьиспользуйте:

% store

и мне нужно хранить переменные.С помощью:

dir()

я получаю список строк со всеми именами переменных, которые я создал до этой строки, например:

['a','b','c']

Есть ли способ выполнить:

%store a
%store b
%store c

Зная строки переменных?Я пытался с этим:

for i in dir():
    %store eval(i)

, но это дает: UsageError: Неизвестная переменная 'eval (i)' Как я могу справиться с этим?Есть ли способ сохранить всю локальную среду в Jupyter Notebook для следующего использования?

РЕДАКТИРОВАТЬ:

for i in dir():
    %store locals()[i]

Gives: UsageError: Неизвестная переменная 'locals () [i]'

1 Ответ

0 голосов
/ 26 августа 2018

Как подсказывает @abarnert, вы можете запускать магию линии программно, например ::10000

In []:
import IPython
store = IPython.get_ipython().find_line_magic('store')

a = b = c = 10
for i in ['a', 'b', 'c']:
    store(i)

Out []:
Stored 'a' (int)
Stored 'b' (int)
Stored 'c' (int)

Проблема с попыткой сделать это с помощью %store состоит в том, что переданная ему строка не оценивается, а просматривается непосредственно в области видимости, поэтому возникает ошибка Unknown variable 'eval(i)'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...