Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从脚本中的IPython交互式命名空间访问变量_Python_Ipython - Fatal编程技术网

从脚本中的IPython交互式命名空间访问变量

从脚本中的IPython交互式命名空间访问变量,python,ipython,Python,Ipython,是否有一种简单的方法可以访问IPython交互式命名空间中的变量。在实现一个具有慢速加载命令的项目时,我想运行一个脚本将数据加载到交互式工作空间,然后调用第二个使用数据的脚本,就像使用MATLAB一样 在这个简单的例子中,我想做的是 In [20]: a=5 In [21]: run tst 其中tst.py只是 print a 我的想法是,我想运行一次加载脚本,然后在tst.py上工作 谢谢 没有简单或聪明的方法可以做到这一点。一种方法是在测试函数中使用main函数,然后从环境中传入gl

是否有一种简单的方法可以访问IPython交互式命名空间中的变量。在实现一个具有慢速加载命令的项目时,我想运行一个脚本将数据加载到交互式工作空间,然后调用第二个使用数据的脚本,就像使用MATLAB一样

在这个简单的例子中,我想做的是

In [20]: a=5

In [21]: run tst
其中tst.py只是

print a
我的想法是,我想运行一次加载脚本,然后在tst.py上工作


谢谢

没有简单或聪明的方法可以做到这一点。一种方法是在测试函数中使用
main
函数,然后从环境中传入
globals
,以更新调用者中的
globals
。例如:

tst.py

def main(borrowed_globals):
    globals().update(borrowed_globals)
    print a
然后在iPython:

In [1]: a = 5

In [2]: import tst

In [3]: tst.main(globals())
5

尝试在IPython的magic run命令上使用-i选项;它使脚本使用当前的交互式命名空间运行,例如

load.py:

a = 5
tst.py:

print a
从伊皮顿我得到了

In [1]: from load import *

In [2]: run -i tst
5

伟大的这是避免复制粘贴到ipython的方法。