Python将给定字符串作为目标变量

时间:2018-08-25 20:29:10

标签: python string variables jupyter-notebook store

编辑:一般的想法是使用%store魔术将所有变量存储在我的Jupyter Notebook中,以便使用%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]

给出:UsageError:未知变量'locals()[i]'

1 个答案:

答案 0 :(得分:0)

按照@abarnert的建议,您可以通过编程方式运行line magic,例如:

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)'