运行文件时是否可以在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
将完成此操作。