Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.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,我有一个这样的文件: import pandas a pd def a_func(): print 'doing stuff' if __name__ == "__main__": if 'data' not in globals(): print 'loading data...' data = pd.read_csv('datafile.csv') 当我在IPython中使用run file.py运行文件时,它总是加载数据,但是当我在IP

我有一个这样的文件:

import pandas a pd

def a_func():
    print 'doing stuff'

if __name__ == "__main__":
    if 'data' not in globals():
        print 'loading data...'
        data = pd.read_csv('datafile.csv')

当我在IPython中使用
run file.py
运行文件时,它总是加载数据,但是当我在IPython中打印
globals.keys()
时,我可以看到
数据
变量。有没有办法从我的
文件.py
脚本中访问IPython中的全局变量,这样我就不必每次在IPython中运行脚本时都加载数据?

每次执行python文件时,解释器都会重置globals()字典。所以如果你想做一些像

print globals().keys()
您可以看到“数据”不在globals中。当程序运行时,此词典将更新。所以我认为你不能在程序中引用IPython的globals()


检查这个,根据它,全局是空的。

我认为使用IPython,它会将一个空/无分配的
数据
优先放在全局范围内(即使特定的行没有/永远不会运行)。检查这个链接,根据它,它是空的全局。是的,已经使用Python十多年了,但试图理解为什么问这个问题的人会认为
data
在globals()中。只是测试了它,Cpy2没有预先分配全局变量,所以没有意义。IPython通常会为运行的每个文件创建一个新的命名空间,然后将变量传输到交互式命名空间中。如果您确实希望直接在交互式命名空间中运行文件,
%run-i
将完成此操作。