在不销毁目标文件中定义的全局变量的情况下运行IPython

5
我希望在我正在进行的一些数字计算工作中定义一些全局变量,我正在逐步编写脚本,不希望之前的结果继续被加载/重新计算。一种方法是将成熟的代码分解到一个单独的文件中,只有在交互式运行新代码时才使用python run。然而,我只想在一个文件中完成它,以提高开发速度。
我认为在文件中定义的全局变量会在调用run之间保持存在,但实际上并不是这样。
因此,我的脚本有以下代码块:
if globals().has_key('all_post_freq') != True:
    print "creating all post freq var"
    global all_post_freq
    all_post_freq = all_post_freq_("pickle/all_post_freq.pickle")

我该如何在 ipython run 的多次调用之间保留 all_post_freq 变量? 编辑 好的,我已经将代码拆分为文件,但我知道必须有一种方法可以做到我需要做的事情 :D

1
你展示的第一行代码可以更清晰,例如 if 'all_post_freq' not in globals(): - Thomas K
确实,在一段时间的间隔后回到Python,当某些东西不起作用时,我会不理智地摆弄它。那行代码就是这样一个摆弄的过程,哈哈:D - Hassan Syed
1个回答

7

当您运行一个文件时,它通常是在一个空白的命名空间中启动的,并且它的全局变量会在它完成时添加到交互式命名空间中。有一个 -i 标志,它将直接在交互式命名空间中运行它,因此它将看到您已经定义的变量:

%run -i myscript.py

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接