Python shell和execfile的作用域
我在使用ipython这个工具,常常需要重新加载一些包含我正在编写的函数的脚本文件。
在我的main.py文件里,我写了这个:
def myreload(): execfile("main.py") execfile("otherfile.py")
当我在同一个ipython会话中直接运行execfile命令后,再调用myreload()是可以正常工作的。
但是,如果会话是新的,我刚刚调用了execfile("main.py"),那么myreload()就无法让otherfile.py里的函数可用。虽然没有报错。
有没有什么想法?
2 个回答
2
如果你想学习如何正确使用 ipython(也就是在交互模式下),那么你应该使用一些特殊的命令,比如:
%run
还有
%edit
你可以通过输入 %run?
来查看这些命令的帮助信息,这样可以看到具体的例子。
另外,你也可以查看这个链接了解更多内容:http://ipython.org/ipython-doc/stable/interactive/tutorial.html
2
函数会创建一个新的作用域。execfile()
是在当前的作用域中运行脚本的。你现在做的这个方法是行不通的。